Angular2 - перехват исключений и отображение сообщений об ошибках
Я могу ловить исключения при использовании метода.subscribe() с catch(), но это делается на основе вызова службы. Есть ли способ поймать исключение, которое происходит в любом месте на странице, и отобразить его в представлении?
Уловить исключения и отобразить их в консоли просто, но мне нужно что-то отобразить в представлении, чтобы выдавать полезное сообщение об ошибке, а не просто зависать.
Спасибо
1 ответ
Вы можете переопределить глобальный обработчик ошибок в вашем модуле:
https://angular.io/docs/ts/latest/api/core/index/ErrorHandler-class.html
import { NgModule, ErrorHandler } from '@angular/core';
class MyErrorHandler implements ErrorHandler {
handleError(error) {
// do something with the exception
}
}
@NgModule({
providers: [{ provide: ErrorHandler, useClass: MyErrorHandler }]
})
class MyModule {}
Для пользовательского диалога ошибок или сообщений об ошибках я бы создал пользовательский ErrorLogService, который позволяет компонентам подписываться на событие ошибки. Компонент, отображающий ошибку, подпишется на событие ошибки и отобразит сообщение об ошибке или отобразит диалоговое окно с сообщением об ошибке.
Посмотрите этот ответ, чтобы узнать, как использовать Flux для этого (важен шаблон, а не конкретные участвующие классы): Как я могу поддерживать состояние диалогового окна с прогрессом во всем приложении Angular 2?