Effect:
@Effect()
loadDocsEffect$ = this.actions$.pipe(
ofType(myActionTypes.LoadDocs),
mergeMap(action => this.myService.getDocs()),
map(data => new LoadDocsSuccess(data)),
catchError(error => Observable.of(new LoadDocsFailure(error)))
);
当我返回数据时它会起作用,但是当服务器响应错误(例如 404)时,可观察对象已完成,并且在我第二次分派操作时不会触发效果。我寻找一种方法来正确处理错误并继续可观察流,以便我可以在我的组件中订阅它并采取相应的行动。
解决方案在@ngrx 效果不会第二次运行不适合我,或者我无法让它发挥作用。
你需要catchError
根据要求而不是actions$
。为此,您需要修改代码如下:
mergeMap(action =>
this.myService.getDocs().pipe(
map(data => new LoadDocsSuccess(data)),
catchError(error => Observable.of(new LoadDocsFailure(error)))
)
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)