Я бы хотел обрабатывать ошибки в 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