问题描述
如何使用最新的 ngrx 处理 catchError?
effect$ = createEffect(() =>
this.actions$.pipe(
ofType(contactAction),switchMap(({ data }) =>
this.postService.contact(data).pipe(
map(() => contactSuccess()),catchError(error => contactFail)
)
)
)
);
当发生 HTTP 错误时,Effect 不会调度“contactFail”操作。
解决方法
catchError(error => of( contactFail() ))
应该可以解决问题。 map Operator 会自动将返回值提升为 observable,这就是为什么您在请求的成功部分不需要 of Operator。 为了让 CatchError 起作用,它的返回值必须包装到一个 observable 中,以便 ngrx 能够解决它。