[英]Angular 6 library root Provider with factory
我正在嘗試使用需要從最終用戶應用程序進行配置的服務來構建庫。
但是,當我構建庫時,會收到以下警告:
警告:在...中無法解析CacheService的所有參數。這將成為Angular v6.x中的錯誤
這是代碼:
@Injectable()
export class CacheService {
private config: Config;
constructor(config: Config) {
this.config = config;
}
}
@NgModule({
})
export class MyModule {
static forRoot(config: Config): ModuleWithProviders {
return {
ngModule: MyModuleRoot,
providers: [
{ provide: CacheService, useFactory: cacheServiceFactory, deps: [config] }
]
};
}
}
export function cacheServiceFactory(config: Config): CacheService {
return new CacheService(config);
}
當我嘗試在構造函數中注入CacheService來運行我的主應用程序時,得到了AppComponent_Host.ngfactory.js嗎? [sm]:1錯誤錯誤:StaticInjectorError(AppModule)[CacheService-> [object Object]]:
但是我不想注入它,而是使用我創建的工廠...
我的代碼有什么問題?
好的,這是解決方案,
您需要提供配置,以便可以將其注入服務中。 這樣,就不需要工廠了!
@NgModule({
})
export class MyModule {
static forRoot(config: Config): ModuleWithProviders {
return {
ngModule: MyModuleRoot,
providers: [
{ provide: Config, useValue: config },
CacheService
]
};
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.