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

Inject @ngrx store as dependency in a factory provider in Angular

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

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

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

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

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

有什么想法吗? 谢谢

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

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