Внедрение угловой зависимости не разрешается для библиотечного компонента - PullRequest
0 голосов
/ 08 марта 2019

это простая ситуация.В моей библиотеке проекта, называемого lib-a, определены 3 класса: libAModule, LibAComponent и MyService.LibAComponent имеет конструктор, который принимает MyService в качестве параметра.MyService имеет атрибут

@Injector() 

.

В модуле app корневого приложения я предоставляю этот сервис:

providers: [MyService]

в appModule также есть конструктор, который принимает MyServiceв качестве параметра.

Когда я запускаю приложение, зависимость разрешается в конструкторе appModule (проверяется путем перехода в отладчике), однако при попытке визуализации LibAComponent я получаю следующую ошибку в консоли браузераокно:

Error: StaticInjectorError(AppModule)[libAComponent-> MyService]: 
  StaticInjectorError(Platform: core)[libAComponent-> MyService]: 
    NullInjectorError: No provider for MyService!

Я могу это исправить, обновив атрибут

@Injector({provideIn: 'root'}) 

на MyService.Тем не менее, теоретически это эквивалентно предоставлению сервиса в appModule, как я делаю.Причина, по которой я хочу сделать это таким образом, заключается в том, что в конечном итоге я хочу предоставить службу в appModule следующим образом:

providers: [{provide: MyService, useClass: MyExtendedService }] 

, где myExtendedService определен вне проекта библиотеки.

МожетКто-нибудь выяснить, почему я получаю эту ошибку, когда я предоставляю сервис через appModule?

1 Ответ

0 голосов
/ 08 марта 2019

Вы должны использовать

 providers: [ MyService ]

вместо

provider: [{provide: MyService, useClass: MyExtendedService }] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...