我正在尝试使用需要从最终用户应用程序进行配置的服务来构建库。
但是当我构建库时,我得到以下警告:
警告:无法在...中解析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]]:
但是我不想注入它,而是使用我创建的工厂...
我的代码怎么了?
答案 0 :(得分:0)
好的,这是解决方案,
您需要提供配置,以便可以将其注入服务中。 这样,就不需要工厂了!
@NgModule({
})
export class MyModule {
static forRoot(config: Config): ModuleWithProviders {
return {
ngModule: MyModuleRoot,
providers: [
{ provide: Config, useValue: config },
CacheService
]
};
}
}