Ngrx:CatchError 不派发动作
Ngrx: CatchError does not dispatch an action
如何使用最新的 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 运算符会自动将 return 值提升为可观察值,这就是为什么您在请求的成功部分不需要 of 运算符的原因。
为了使 CatchError 起作用,它的 return 值必须包装到一个可观察对象中,以便 ngrx 能够解析它。
如何使用最新的 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 运算符会自动将 return 值提升为可观察值,这就是为什么您在请求的成功部分不需要 of 运算符的原因。 为了使 CatchError 起作用,它的 return 值必须包装到一个可观察对象中,以便 ngrx 能够解析它。