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

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

Ошибка: Uncaught Can't resolve all parameters for 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 { }

person Daniel Patrick    schedule 19.09.2016    source источник
comment
import { Service } from '../services/a.service';, вероятно, должно быть import { ServiceA } from '../services/a.service'; (отсутствует A в названии службы)   -  person Günter Zöchbauer    schedule 19.09.2016


Ответы (2)


обновление ExceptionHandler было переименовано в ErrorHandler https://stackoverflow.com/a/35239028/217408

исходный

Добавьте @Injectable() в свой класс CustomExceptionHandler.

Добавьте CustomExceptionHandler в качестве еще одного из ваших провайдеров в app.module.ts:

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...
  ],
  providers: [
    ServiceA,
    CustomExceptionHandler,
    { provide: ExceptionHandler, useClass: CustomExceptionHandler },
  ],
  bootstrap: [AppComponent],
})
export class AppModule { }
person ade jones    schedule 19.09.2016
comment
Спасибо вам обоим, Гюнтеру и Аде, за ваши ответы. это была комбинация обоих из них, что исправило это. Вам нужно добавить @Injectable(), и вам нужно указать его как обычного поставщика в app.module.ts в дополнение к указанию его как useClass для переопределения ExceptionHandler. Это ставит меня в затруднительное положение относительно того, кого принять в качестве ответа. Тот, кто наберет комбинацию из них, получит ее. Спасибо еще раз! - person Daniel Patrick; 19.09.2016

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

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...
  ],
  providers: [
    ServiceA,
    CustomExceptionHandler,
    { provide: ExceptionHandler, useClass: CustomExceptionHandler },
  ],
  bootstrap: [AppComponent],
})
export class AppModule { }
person Günter Zöchbauer    schedule 19.09.2016
comment
Я исправил ошибку: Uncaught Can't resolve all parameters for CustomExceptionHandler: (?). - person Daniel Patrick; 19.09.2016
comment
это не так, проблема сохраняется. спасибо за ваше время, хотя - person Daniel Patrick; 19.09.2016
comment
Спасибо вам обоим, Гюнтеру и Аде, за ваши ответы. это была комбинация обоих из них, что исправило это. Вам нужно добавить @Injectable(), и вам нужно указать его как обычного поставщика в app.module.ts в дополнение к указанию его как useClass для переопределения ExceptionHandler. Это ставит меня в затруднительное положение относительно того, кого принять в качестве ответа. Тот, кто наберет комбинацию из них, получит ее. Спасибо еще раз! - person Daniel Patrick; 19.09.2016
comment
Каждый должен с чего-то начинать. Я тоже не начинал со 100к ;-) - person Günter Zöchbauer; 19.09.2016