Ошибка провайдера Angular 6 lib - PullRequest
0 голосов
/ 04 июля 2018

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

    // ...

}
...