это простая ситуация.В моей библиотеке проекта, называемого 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?