2016-09-19 5 views
1

При попытке ввести услугу в свой CustomExceptionHandler Угловой инжектор не может найти службу.Угловой 2 инжектор не может найти Сервис при загрузке 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 { } 
+0

'импорт {Сервис} от '../ услуг/a.service',', вероятно, следует 'импорт { ServiceA} из '../ services/a.service'; '(отсутствует' A' в имени службы) –

ответ

1

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

orgiginal

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

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

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

благодарю вас и Gunter, и ade за ваши ответы. это была комбинация обоих из них, которые фиксировали ее. Вам нужно добавить @Injectable(), и вам нужно указать его как обычного провайдера в app.module.ts, а также указать его как useClass, чтобы переопределить ExceptionHandler. Это оставляет мне несколько затруднительное положение, чтобы принять в качестве ответа. Кого бы вы ни выбрали, комбинация из них получит его. Еще раз спасибо! –

1

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

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

Я пересмотрел ошибку: 'Uncaught Не удается разрешить все параметры для CustomExceptionHandler: (?).' –

+0

это не так, проблема сохраняется. благодарю вас за ваше время, хотя –

+0

благодарю вас и Gunter, и ade за ваши ответы. это была комбинация обоих из них, которые фиксировали ее. Вам нужно добавить @Injectable(), и вам нужно указать его как обычного провайдера в app.module.ts, а также указать его как useClass, чтобы переопределить ExceptionHandler. Это оставляет мне несколько затруднительное положение, чтобы принять в качестве ответа. Кого бы вы ни выбрали, комбинация из них получит его. Еще раз спасибо! –