【发布时间】:2019-08-23 17:23:33
【问题描述】:
我有这个在这个例子中调用电影服务的 ngrx 效果,但取决于一个值选择器,如果这个值在验证中符合预期,效果会发送一个新动作,这样我就避免调用服务因为条件。现在我不能在 if 块中使用另一个动作(这将更具描述性),因为这个错误:
类型 'Observable' 不可分配给类型 '可观察 | ((...args: any[]) => Observable)'.
类型 'Observable' 不可分配给类型 '可观察'.ts(2322).
处理这种情况的更好方法是什么?
loadMovies$ = createEffect(() => this.actions$.pipe(
ofType('[Movies Page] Load Movies'),
concatMap(action => of(action).pipe(withLatestFrom(this.store.select(getBlockBuster)))),
mergeMap(([{payload}, foundBlockBuster]) => {
if (!foundBlockBuster) {
// in order to avoid errors we need to use this({ type: '[Movies API] Movies Loaded Success', payload: movies }))
return of({ type: '[Movies] The block busters are rent' })
}
return this.moviesService.getAll()
.pipe(
map(movies => ({ type: '[Movies API] Movies Loaded Success', payload: movies })),
catchError(() => of({ type: '[Movies API] Movies Loaded Error' }))
)
})
)
);
【问题讨论】:
标签: javascript angular rxjs ngrx ngrx-effects