Я знаю, что этот вопрос похож на Пользовательская библиотека Angular 6 Нет поставщика для 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);
}
}
// ...
}