В моей app.module.ts
у меня есть:Angular2: Инъекционное маршрутизатор в myExceptionHAndler
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule,
HttpModule
],
providers: [
{provide: ErrorHandler, useClass: MyExceptionHandler}
],
bootstrap: [AppComponent],
})
export class AppModule {}
Тогда в моем MyExceptionHandler
:
import { Injectable } from "@angular/core"
import { Router } from "@angular/router"
@Injectable()
export class MyExceptionHandler {
constructor (private _router: Router) {}
handleError(error:any):void {
...
}
}
Однако, я имею ошибку говоря: Error: Error: Provider parse errors
Если я используйте MyExceptionHandler как обычный провайдер, он отлично работает. Поэтому я предполагаю, что ErrorHandler будет обработан до того, как маршрутизатор будет точно существовать. В любом случае, чтобы исправить это?
Можете ли вы попытаться придать 'Injector' вместо' Router' и использовать 'this._router = injector.get (Rotuer)'. Инъекция в 'ErrorHandler' часто вызывает круговые зависимости, которые можно обойти этим способом. Я также думаю, что ваш MyExceptionHandler должен реализовать 'ErrorHandler'. –
Хорошо, вы могли бы привести пример того, как вводить инжектор? – Scipion
'конструктор (инжектор: инжектор) {this._router = injector.get (Rotuer); } ';-) –