当试图延长角2 exceptionHandler的类
问题描述:
我做了一个扩展的ExceptionHandler在角2类我引导这个没有提供例外:当试图延长角2 exceptionHandler的类
bootstrap(App, [
APP_ROUTER_PROVIDERS,
HTTP_PROVIDERS,
provide(ExceptionHandler, { useClass: CustomExceptionHandler }),
这工作得很好,当我尝试注入出现的问题我的API服务。我尝试这样做:
@Injectable()
export class CustomExceptionHandler extends ExceptionHandler {
constructor(_exceptionApiService: ExceptionApiService) {
super(new ArrayLogger(_exceptionApiService), true);
}
call(error, stackTrace = null, reason = null) {
super.call(error, stackTrace, reason);
}
}
然后我ArrayLogger类:
export class ArrayLogger {
private _exceptionApiService: ExceptionApiService;
constructor(_exceptionApiService: ExceptionApiService) {
this._exceptionApiService = _exceptionApiService;
}
res = [];
log(s: any): void { this.res.push(s); }
logError(s: any): void { this.res.push(s); }
logGroup(s: any): void { this.res.push(s); }
logGroupEnd() {
let error: Error;
let message = this.res[0].replace('EXCEPTION: ', '');
let stack = [];
let index = this.findStackTrace(this.res);
if (index === -1) {
stack.push('Could not find stackTrace!');
} else {
this.res[index].split('\n').map(line => stack.push(line.trim()));
}
error = new Error({
url: window.location.href,
error: message,
stack: stack,
browser: this.getBrowser(navigator.userAgent),
userAgent: navigator.userAgent,
platform: navigator.platform,
datetime: ''
});
this._exceptionApiService.post(error);
}
(...)
}
这给我的错误:
zone.min.js:1 Unhandled Promise rejection: (SystemJS) EXCEPTION: Error during instantiation of ApplicationRef_! (ApplicationRef -> ApplicationRef_).
ORIGINAL EXCEPTION: No provider for ExceptionApiService! (ExceptionHandler -> ExceptionApiService)
ORIGINAL STACKTRACE:
Error: DI Exception
at NoProviderError.BaseException [as constructor] (http://localhost:4200/vendor/@angular/core/src/facade/exceptions.js:27:23)
at NoProviderError.AbstractProviderError [as constructor]
我怎样才能正确地注入我exceptionAPIService?
答
既然你在CustomExceptionHandler
注射ExceptionApiService
,您需要提供它,太:
bootstrap(App, [
APP_ROUTER_PROVIDERS,
HTTP_PROVIDERS,
ExceptionApiService,
provide(ExceptionHandler, { useClass: CustomExceptionHandler }),