Angular2 ExceptionHandler无法正常工作

时间:2016-07-18 13:26:12

标签: angular 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。

詹姆斯

1 个答案:

答案 0 :(得分:3)

不知道这是否是问题,但不要使用Component作为错误处理程序。这不是办法。

你必须(甚至没有必要,但它看起来更酷)实现ExceptionHandler接口,而不是扩展它。不需要@Injectable()(但是......也许这个处理程序将来会有依赖关系,然后是必要的)

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

你可以保持你的引导程序