0

尝试使用带有效果模块的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无论如何都运行。

理想情况下,我想拦截这个失败,并调度另一个动作(所以我可以显示一个模式或其他东西,但不做重定向)

4

1 回答 1

0

如果finishAction 的reducer 使过程失败,则状态应更改为错误一。

您可以在组件中订阅 Effects.start$ 并选择错误状态。如果订阅收到错误,您可以通过移动到新路线来做出反应。

于 2017-04-27T14:43:42.287 回答