在效果模块中使用ngrx。我调度动作,通过效果做一些异步的东西,然后我调度一个新动作来更新状态,然后重定向。这是我正在做的事情的缩减版本:
@Injectable()
export class Effects {
@Effect()
start$: Observable<Action> = this.actions$
.ofType('start')
// omitted for brevity
.concatMap(action => [
new finishAction(action.payload),
go(['/'])
])
.catch((err) => {
console.log('err', err);
return Observable.empty();
})
constructor(private actions$: Actions) {
}
}
这一切都运行正常 - 当我发送start
动作时,此效果启动,调度finish
动作,然后重定向回根(通过go
动作,从@ngrx/router-store
导入。
如何处理finishAction
失败的事情?目前我在控制台中收到错误,然后go
无论如何都会运行。
理想情况下,我想拦截这个失败,然后发出另一个动作(所以我可以显示一个模态或其他内容,但不能重定向)
答案 0 :(得分:0)
如果finishAction的reducer使进程失败,则状态应该更改为错误1。
您可以在组件中订阅Effects.start $并选择错误状态。如果订阅收到错误,您可以通过转移到新路径做出反应。