2017-02-14 5 views
2

Я могу уловить исключения при использовании метода .subscribe() с catch(), но это делается на основе вызова службы. Есть ли способ поймать исключение, которое происходит где угодно на странице и отображать его в представлении?Angular2 - улавливание исключений и отображение сообщений об ошибках в представлении

Прямо перехватить исключения и отобразить их в консоли, но мне нужно отобразить что-то в представлении, чтобы дать полезное сообщение об ошибке, а не просто замораживание.

Благодаря

+0

Вы можете использовать [window.onerror] (https: //developer.mozilla. org/en-US/docs/Web/API/GlobalEventHandlers/onerror), чтобы реагировать на все исключения на странице, но я не уверен, что это хорошая идея ... – AngularChef

ответ

2

Вы можете переопределить глобальный обработчик ошибок в пределах модуля:

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, чтобы сделать это (рисунок важно - не конкретные классы, участвующие): How can I maintain the state of dialog box with progress all over my Angular 2 application?

Смежные вопросы