将 @ngrx store 作为依赖项注入到 Angular 的工厂提供程序中

Dav*_*vid 2 ngrx angular

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

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

到目前为止,这一切都运行良好。问题来了,因为现在我需要将状态(@ngrx)作为这些服务之一的依赖项注入。我该怎么做呢?

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

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

有任何想法吗?谢谢。

ero*_*osb 6

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

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