Поэкспериментируйте с использованием 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
запускается независимо.
В идеале я хотел бы перехватить этот сбой и отправить другое действие (чтобы я мог показать модальное окно или что-то в этом роде, но не выполнять перенаправление)