我正在尝试在Angular 2中实现一个中心ExceptionHandler。我在SO中搜索并找到了关于这个主题的几个主题,如下面那些:
Module '"angular2/angular2"' has no exported member 'ExceptionHandler'
How to properly overwrite the exceptionHandler in angularjs?
但是,这个话题似乎已经过时了。
我正在使用Angular 2 RC5,并按照文档here,尝试实现:
import { ExceptionHandler } from '@angular/core';
export class CustomExceptionHandler implements ExceptionHandler {
call(error:any, stackTrace:any = null, reason:string = null) {
// do something with the exception
}
}
但是我收到类似的错误“TS2420 - CustomExceptionHandler错误地实现了接口ExceptionHandler。类型'CustomExceptionHandler'中缺少属性'_logger'。
我是TS的新手,但我已经用Java编程了10年。
实际上,当我点击IDE(IntelliJ)中的ExceptionHandler时,代码会跟进一个类,而不是一个接口。
export declare class ExceptionHandler {
private _logger;
private _rethrowException;
constructor(_logger: any, _rethrowException?: boolean);
static exceptionToString(exception: any, stackTrace?: any, reason?: string): string;
call(exception: any, stackTrace?: any, reason?: string): void;
}
答案 0 :(得分:3)
以下是RC6,
例外是deprecated for public use see changelog for RC6,
核心:例外不再是公共API的一部分。我们不希望任何人都应该引用异常类型。
ExceptionHandler.call(exception: any, stackTrace?: any, reason?: string): void;
更改为:
ErrorHandler.handleError(error: any): void;
使用ErrorHandler
,see this
class MyErrorHandler implements ErrorHandler {
call(error, stackTrace = null, reason = null) {
// do something with the exception
}
}
@NgModule({
providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]
})
class MyModule {}
希望这有帮助!!