在 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]
}
我在 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]
}