我需要能够从SomeService
的导入部分注入并使用角度2服务(下面称为NgModule
):
...
imports: [
BrowserModule,
RouterModule.forRoot(AppRoutes, {useHash: true}),
HttpModule,
ReactiveFormsModule,
NgbModule,
StoreModule.provideStore({
currentUserAccount: someFunction(currentUserAccountReducer, someService),
authenticated: someFunction(authenticatedReducer, someService)
},
{
authenticated: false
})
],
...
我需要这个,因为我需要使用普通函数(上面名为Http
)的全功能服务(取决于someFunction
),以便重新补充 ngrx商店应用。
此处someFunction
是元缩减器。
请参阅ngrx商店应用程序中meta reducer的概念。
有人可以帮忙吗?
答案 0 :(得分:1)
我不完全确定我明白你要做什么(没有看到更多代码),但我想你可以通过使用工厂进行提供程序配置来完成你想要做的事情
providers: [
{
provide: WhateverService,
useFactory: (things: Things, to: To, inject: Inject) => {
// Not 100% sure, but I believe the return should be
// synchronous. If you have some asynchronous actions
// to be resolved first, you may just want to pass the
// Promise or Observable to the constructor
return new WhateverService(...);
},
deps: [Things, To, Inject]
}
]
在StoreModule
中,它可能类似于
@NgModule({})
export class StoreModule {
static provideStore(variable) {
return {
ngModule: StoreModule,
providers: [
{
provide: WhateverService,
useFactory: (things: Things, to: To, inject: Inject) => {
// use variable here
return new WhateverService(...);
},
deps: [Things, To, Inject]
}
]
}
}
}
如果您尝试在引导之前解析某些远程数据,则另一个选项是执行this之类的操作。除此之外,我可能完全不在,因为我不熟悉ngrx。