在Angular的工厂提供程序中将@ngrx存储作为依赖项注入

时间:2018-02-19 13:25:16

标签: angular ngrx

我在Angular应用程序的app.module中使用函数工厂来初始化一个服务。像这样的东西

export function analyticsServiceFactory() {
  return ConfigService.env === "development" ? new AnalyticsDevService() : new AnalyticsService();
}
...
const providers = [
  ...
  { provide: AnalyticsService, useFactory: analyticsServiceFactory }
];

直到现在这个工作正常。 问题来了,因为现在我需要将状态(@ngrx)注入其中一个服务的依赖项。我该怎么做?

我知道我可以向工厂提供商添加依赖项,但如何添加状态?这甚至可能吗?

此外,我的商店和我的analyticsServiceFactory在不同的模块中定义,这使得它更加困难。

有什么想法吗? 感谢。

1 个答案:

答案 0 :(得分:1)

您可以在提供程序定义的"deps"数组中要求依赖项,然后只接受它们作为工厂函数中的参数:

{ provide: FooService, useFactory: (store: Store<AppState>, httpClient: HttpClient) => { return new FooService(httpClient, store); }, deps: [Store, HttpClient] }