Angular - ngrx, switchMap при ошибке дальнейших подписок не срабатывает - PullRequest
0 голосов
/ 07 марта 2019

У меня есть магазин ngrx в моем угловом приложении. Вот моя функция инициализации компонента.

ngOnInit() {

 this.$appState = this.appState.getIndex().pipe(switchMap((index) => {
      // do something and return subscription
      return this.someService.getItem(index);
    }), switchMap((data) => {
      return this.someOtherService.getItemDetails(data.index);
    })).subscribe((item: any) => {

});

При изменении состояния, когда компонент активен (не уничтожен), компонент подпишется на appState.getIndex и получит последний элемент и получит последний элемент itemDetails. Это прекрасно работает, пока this.someService.getItem(index); и this.someOtherService.getItemDetails(data.index) возвращают 200. Есть некоторые элементы, которые вообще не имеют деталей или элементов, тогда вызовы возвращают 404. После этого любые дальнейшие изменения состояния не вызывают звонки по подписке. Не уверен, что именно моя ошибка. Кто-нибудь может указать мою ошибку.

1 Ответ

0 голосов
/ 07 марта 2019

каждый из ваших запросов в большинстве случаев должен обрабатывать свои собственные ошибки.

    ngOnInit() {

     this.$appState = this.appState.getIndex().pipe(switchMap((index) => {
          // do something and return subscription
          return this.someService.getItem(index).pipe(
              catchError(err => handlerror(err))
             );
        }), switchMap((data) => {
          return this.someOtherService.getItemDetails(data.index).pipe(
              catchError(err => handlerror(err))
             );
        })).subscribe((item: any) => {

    });
...