@ ngrx эффект не запускается во второй раз
Я только начал изучать @ngrx / store и @ngrx.эффекты и создали свой первый эффект в моем приложении Angular / Ionic. Он работает нормально в первый раз, но если я снова отправлю событие в магазин (т. е. при повторном нажатии кнопки), ничего не произойдет (не будет выполнен ни один сетевой вызов, ничего в журналах консоли). Есть ли что-то очевидное, что я делаю неправильно? Вот результат:
@Effect() event_response$ = this.action$
.ofType(SEND_EVENT_RESPONSE_ACTION)
.map(toPayload)
.switchMap((payload) => this.myService.eventResponse(payload.eventId,payload.response))
.map(data => new SentEventResponseAction(data))
.catch((error) => Observable.of(new ErrorOccurredAction(error)));
Спасибо
1 ответ:
Похоже, произошла ошибка. В этой ситуации действие в наблюдаемом, возвращаемое
catch
, будет излучено в поток эффекта, и эффект завершится - что предотвратит запуск эффекта после того, как действие ошибки будет излучено.Переместите
map
иcatch
вswitchMap
:@Effect() event_response$ = this.action$ .ofType(SEND_EVENT_RESPONSE_ACTION) .map(toPayload) .switchMap((payload) => this.myService .eventResponse(payload.eventId, payload.response) .map(data => new SentEventResponseAction(data)) .catch((error) => Observable.of(new ErrorOccurredAction(error))) );
Составление
catch
внутриswitchMap
предотвратит завершение эффекта, если произойдет ошибка.