2

ngrx エフェクトを使用するように移行していますが、次の問題があります: dispatchngrxvoidエフェクト (例: からthis.userAccountService.updateFirstName(...) からエラーが発生した場合に、ルーターのナビゲーションをどのように防止するかがわかりません。

私のコンポーネントクラスから:

  updateFirstName() {
    this.formStatus.submitted = true;
    if (this.formStatus.form.valid) {
      //Dispatch from the store
      this.store.dispatch(new UpdateFirstNameAction(this.formStatus.form.value.firstName));
      //Undesired behavior: will navigate even in case of error/failure!
      this.router.navigate(['/dashboard/useraccount']);
    }
  }

私の効果クラスから:

  @Effect()
  updateFirstName$: Observable<Action> = this.actions$
    .ofType(currentUserAccount.ActionTypes.UPDATE_FIRST_NAME)
    .map((action: UpdateFirstNameAction) => action.payload)
    .switchMap(firstName =>
      this.userAccountService
        .updateFirstName(firstName)
        .map(() => new UpdateFirstNameSuccessAction(firstName))
        //I obviously can't navigate from here
    );

効果からナビゲートするためにルーターを使用することが良い習慣である(または可能である)かどうかはわかりません。

私の影響でエラーが発生した場合にルーターのナビゲーションを防ぐためのクリーンな解決策を誰かが提案できますか?

4

2 に答える 2