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?

Другие вопросы по тегам