Инжектор Angular 2 не может найти службу при загрузке CustomExceptionHandler

При попытке внедрить сервис в мой CustomExceptionHandler, угловой инжектор не может найти сервис.

Ошибка: Uncaught Can't resolve all parameters for CustomExceptionHandler: (?).

Настройка:

CustomExceptionHandler

import { ExceptionHandler } from '@angular/core';

import { ServiceA } from '../services/a.service';

export class CustomExceptionHandler extends ExceptionHandler {

  constructor(private serviceA: ServiceA) {
    super(null, null);
  }

  call(error, stackTrace = null, reason = null) {
      //do something with the service
  }
}

app.module

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...
  ],
  providers: [
    ServiceA,
    { provide: ExceptionHandler, useClass: CustomExceptionHandler },
  ],
  bootstrap: [AppComponent],
})
export class AppModule { }

2 ответа

Решение

Обновить ExceptionHandler был переименован в ErrorHandler /questions/46627621/angular2-prilozhenie-avarijno-zavershaet-rabotu-perestaet-otvechat-na-zaprosyi-posle-vozniknoveniya-isklyucheniya-oshibki/46627642#46627642

orgiginal

добавлять @Injectable() в ваш класс CustomExceptionHandler.

Добавьте CustomExceptionHandler в качестве другого вашего провайдера в app.module.ts:

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...
  ],
  providers: [
    ServiceA,
    CustomExceptionHandler,
    { provide: ExceptionHandler, useClass: CustomExceptionHandler },
  ],
  bootstrap: [AppComponent],
})
export class AppModule { }

Вам нужно добавить CustomExceptionHandler и его зависимость от providers также:

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...
  ],
  providers: [
    ServiceA,
    CustomExceptionHandler,
    { provide: ExceptionHandler, useClass: CustomExceptionHandler },
  ],
  bootstrap: [AppComponent],
})
export class AppModule { }
Другие вопросы по тегам