2016-07-18 12 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:私は、私がテストに(私のサービスのいずれかで発生する強制てるHTTPエラーを持っている

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 { 


    } 

} 

例外ハンドリング)、私の "グローバル"ハンドラが呼び出されると期待します。何か不足していますか?残念ながら、今のところそこにはたくさんのドキュメントがありません...

TIA。

ジェームズ

答えて

3

それが問題だが、エラーハンドラとしてComponentを使用しない場合は、[いいえアイデア。それはそれを行う方法ではありません。

ExceptionHandlerインターフェイスを実装し、拡張しないでください(必要ではありませんが、よりクールに見えるだけです)。それは

ある

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

あなたはあなたのブートストラップの方法を維持することができ@Injectable()の必要はありませ(まだ...多分、このハンドラは、将来的に依存関係を持ちませんし、それが必要です)

関連する問題