Ошибка провайдера Angular 6 lib
Я знаю, что этот вопрос похож на Angular 6 Custom Lib No провайдера для ComponentFactoryResolver.
Ошибка: StaticInjectorError(AppModule)[AppComponent -> NgRestModelService]: StaticInjectorError(Платформа: ядро)[AppComponent -> NgRestModelService]: NullInjectorError: Нет поставщика для NgRestModelService!
Чтобы увидеть полный код, посетите репозиторий на GitHub.
Я следовал документации Angular (и пример кода Angular), но эта ошибка отображается.
Вкратце: есть служба, которая должна быть настроена с базовым URL-адресом API, но конфигурация не предоставляется конструктору службы, даже если она присутствует в forRoot()
метод NgModule.
Модуль приложения:
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpClientModule,
NgRestModelModule.forRoot({
baseUrl: 'http://localhost:5656/api'
}),
],
providers: [Denomination],
bootstrap: [AppComponent]
})
export class AppModule {}
Модуль Lib:
@NgModule({
imports: [],
declarations: [],
exports: [],
providers: [NgRestModelService]
})
export class NgRestModelModule {
static forRoot(config: INgRestModelConfig): ModuleWithProviders {
console.log('forRoot got ', config);
return {
ngModule: NgRestModelModule,
providers: [
{provide: NgRestModelConfig, useValue: config}
]
};
}
constructor(@Optional() @SkipSelf() parentModule: NgRestModelModule) {
if (parentModule) {
throw new Error(
'NgRestModelModule is already loaded. Import it in the AppModule only');
}
}
}
Lib сервис:
export class NgRestModelConfig implements INgRestModelConfig {
http: HttpClient;
baseUrl: string;
}
@Injectable()
export class NgRestModelService {
// ...
constructor(
private _http: HttpClient,
@Optional() config: NgRestModelConfig,
) {
console.log('consturcting NgRestModelService, config: ', config);
if (config) {
this.configure(config);
}
}
// ...
}