Обработка ошибок в NGXS (угловая) с глобальным обработчиком ошибок - PullRequest
1 голос
/ 03 июля 2019

Я бы хотел обрабатывать ошибки в NGXS двумя способами.Первый способ - обработка ошибки при отправке магазина в компоненте.Второй способ - это глобальный обработчик угловой ошибки в качестве запасного варианта, когда ошибка не обрабатывается (не обрабатывается первым способом).

Но проблема заключается в том, что глобальный обработчик ошибок всегда вызывается NGRX, когда существуетошибка в обработчике действия.

Итак, учитывая этот код в компоненте:

this.store.dispatch(new FetchAction())
   .subscribe( error: () => console.log('fetch error occured'))

этот обработчик действия:

fetch() {
   return this.http.get('..');
}

и этот глобальный обработчик ошибок:

export class GlobalErrorHandler extends ErrorHandler {
   handleError(err: any) {
      console.log('unexpected error occured');
   }
}

В консоли будет два сообщения об ошибках.Один от подписки на рассылку и один от глобального обработчика ошибок, потому что была ошибка в обработчике действия.

Теперь я мог отлавливать ошибки в обработчике действий, но это было бы неправильным местом, чтобы сделать это, потому чтообработчик действия не должен знать, что ошибка от этого действия обрабатывается в компоненте.

Я сделал стек, который показывает две ошибки в консоли при нажатии кнопки: https://stackblitz.com/edit/ngxs-error-throw-r42fkb?file=src/app/app.component.ts

...