ngrx エフェクトを使用するように移行していますが、次の問題があります: dispatch
ngrxvoid
エフェクト (例: から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
);
効果からナビゲートするためにルーターを使用することが良い習慣である(または可能である)かどうかはわかりません。
私の影響でエラーが発生した場合にルーターのナビゲーションを防ぐためのクリーンな解決策を誰かが提案できますか?