Провайдер не работает, если только зависимый провайдер не определен со свойством "deps" - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь использовать угловой сервис, который я создал в независимой библиотеке с именем HttpService . Я использую этот сервис в другом угловом сервисе в моем текущем проекте, его имя IdentityService . Я пытаюсь внедрить HttpService в IdentityService , но angular всегда говорит NullInjectorError: Нет поставщика для HttpService! .

Я определил несколькокак это в моем app.module.ts :


import { HttpService } from '@my-http';
... some more imports

@NgModule({
  declarations: [
     ...
  ],
  imports: [
     ...
  ],
  providers: [
    IdentityService,
    HttpService
  ],
  exports: [...],
  bootstrap: [...],
  schemas: [...],
  entryComponents: [...]
})
export class AppModule { }

Это дает мне ошибку NullInjectorError: Нет поставщика для HttpService! при попытке ввести HttpService в IdentityService конструктор.

Затем я изменил его так:

import { HttpService } from '@my-http';
... some more imports

@NgModule({
  declarations: [
     ...
  ],
  imports: [
     ...
  ],
  providers: [
    {
      provide: IdentityService,
      useClass: IdentityService,
      deps: [HttpService]
    },
    HttpService
  ],
  exports: [...],
  bootstrap: [...],
  schemas: [...],
  entryComponents: [...]
})
export class AppModule { }

И это действительно работает!

Iпопытался воспроизвести это поведение в тестовом проекте и не смог. В тестовом проекте Внедрение зависимостей работает должным образом, и угловой не заставляет меня устанавливать атрибут deps , так что работает первый способ определения провайдеров.

Iхотел бы понять, каковы возможные причины такого поведения углов, для работы установите один атрибут deps .

...