2016-07-18 4 views
1

Я искал вокруг совсем немного и не нашел ничего, что помогло мне преодолеть горб. Я думаю, что я применил Angular2 ExceptionHandler по мере необходимости, но он никогда не будет вызван.Angular2 ExceptionHandler не работает

Main.ts:

import { bootstrap } from '@angular/platform-browser-dynamic'; 
import { disableDeprecatedForms, provideForms } from '@angular/forms'; 
import { AppComponent } from './app.component'; 
import { ExceptionHandler, Injector , provide, Provider} from '@angular/core'; 
import { APP_ROUTER_PROVIDERS } from './app.routes'; // <-- load in global routes and bootstrap them 
import { ErrorHandler } from './errorhandler/error-handler.component'; 

bootstrap(AppComponent,[ 
    APP_ROUTER_PROVIDERS, 
    disableDeprecatedForms(), 
    provideForms(), 
    provide(ExceptionHandler, {useClass: ErrorHandler}) 
]) 

ОШИБОК handler.component.ts:

import { Component, Injectable, ExceptionHandler } from '@angular/core'; 
import { ROUTER_DIRECTIVES } from '@angular/router'; 
import { APP_PROVIDERS } from '../app.providers'; 

@Component({ 
    moduleId: module.id, 
    template: `Error happened here!!!!`, 
    directives: [ ROUTER_DIRECTIVES ], 
    providers: [ APP_PROVIDERS ] 
}) 

@Injectable() 
export class ErrorHandler extends ExceptionHandler { 

    call (exception: any, stackTrace?: any, reason?: string): void { 


    } 

} 

У меня есть ошибка HTTP, что я принуждая произойти в одном из моих услуг (для теста обработка исключений) и ожидал, что мой «глобальный» обработчик получит вызов. Я что-то упускаю? К сожалению, сейчас не так много документации ...

TIA.

Джеймс

ответ

3

Не знаю, если это проблема, но не использовать Component в качестве обработчика ошибок. Это не способ сделать это.

Вам просто нужно (даже не нужно, но он выглядит круче) реализовать интерфейс ExceptionHandler, а не расширять его. Нет необходимости в @Injectable() (еще ... возможно, этот обработчик будет иметь зависимости в будущем, а затем необходимо)

export class ErrorHandler implements ExceptionHandler { 
    call(error, stackTrace = null, reason = null) { 
    // do something with the exception 
    } 
} 

Вы можете сохранить вашу самозагрузку пути это

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