我在Angular应用程序的app.module中使用函数工厂来初始化一个服务。像这样的东西
export function analyticsServiceFactory() {
return ConfigService.env === "development" ? new AnalyticsDevService() : new AnalyticsService();
}
...
const providers = [
...
{ provide: AnalyticsService, useFactory: analyticsServiceFactory }
];
直到现在这个工作正常。 问题来了,因为现在我需要将状态(@ngrx)注入其中一个服务的依赖项。我该怎么做?
我知道我可以向工厂提供商添加依赖项,但如何添加状态?这甚至可能吗?
此外,我的商店和我的analyticsServiceFactory在不同的模块中定义,这使得它更加困难。
有什么想法吗? 感谢。
答案 0 :(得分:1)
您可以在提供程序定义的"deps"
数组中要求依赖项,然后只接受它们作为工厂函数中的参数:
{
provide: FooService,
useFactory: (store: Store<AppState>, httpClient: HttpClient) => {
return new FooService(httpClient, store);
},
deps: [Store, HttpClient]
}