我正在尝试使用需要最终用户应用程序配置的服务构建一个库。
但是当我构建库时,我收到以下警告:
警告:无法解析 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 错误错误: 静态注入器错误(应用模块([缓存服务 -> [对象对象]]:
但我不希望它被注入,而是使用我创建的工厂......
我的代码有什么问题?
好的,这是解决方案,
您需要提供配置,以便可以在服务中注入它。 这样,就不需要工厂了!
@NgModule({
})
export class MyModule {
static forRoot(config: Config): ModuleWithProviders {
return {
ngModule: MyModuleRoot,
providers: [
{ provide: Config, useValue: config },
CacheService
]
};
}
}