Angular 6 库根提供程序与工厂



我正在尝试使用需要最终用户应用程序配置的服务构建一个库。

但是当我构建库时,我收到以下警告:

警告:无法解析 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
]
};
}
}

相关内容

最新更新