我在其他地方使用我的服务,通过角度2自动注入。 我想在ExceptionHandler中使用相同的服务。 但服务不会将数据发布到服务器。 我经历了debuger并且我的服务调用了。
class MyExceptionHandler extends ExceptionHandler {
rbJSLogger: RBLoggerService;
constructor() {
super(null,null);
var injector = ReflectiveInjector.resolveAndCreate([
RBLoggerService,
JSONP_PROVIDERS,
Http,
ConnectionBackend,
HTTP_PROVIDERS
]);
this.rbJSLogger = injector.get(RBLoggerService);
}
call(error, stackTrace = null, reason = null){
// console.error(stackTrace);
this.rbJSLogger.searchBy("asd");
}
}
答案 0 :(得分:2)
更新 ExceptionHandler
已重命名为ErrorHandler
https://stackoverflow.com/a/35239028/217408
<强> orgiginal 强>
此代码
var injector = ReflectiveInjector.resolveAndCreate([...]);
创建一个新的独立注入器,它不了解Angular应用程序中提供的任何服务。
您可能希望在应用程序中注入Angular使用的注入器,如
class MyExceptionHandler extends ExceptionHandler {
rbJSLogger: RBLoggerService;
constructor(injector:Injector) {
super(null,null);
this.rbJSLogger = injector.get(RBLoggerService);
}
call(error, stackTrace = null, reason = null){
// console.error(stackTrace);
this.rbJSLogger.searchBy("asd");
}
}
或只是
class MyExceptionHandler extends ExceptionHandler {
rbJSLogger: RBLoggerService;
constructor(private rbJSLogger:RBLoggerService) {
super(null,null);
}
call(error, stackTrace = null, reason = null){
// console.error(stackTrace);
this.rbJSLogger.searchBy("asd");
}
}