在 angular 2 应用程序的 NgModule 导入部分中注入依赖项
Injecting dependencies inside the NgModule import section of an angular 2 app
我需要能够从 NgModule
的导入部分注入和使用 angular 2 服务(下面称为 SomeService
):
...
imports: [
BrowserModule,
RouterModule.forRoot(AppRoutes, {useHash: true}),
HttpModule,
ReactiveFormsModule,
NgbModule,
StoreModule.provideStore({
currentUserAccount: someFunction(currentUserAccountReducer, someService),
authenticated: someFunction(authenticatedReducer, someService)
},
{
authenticated: false
})
],
...
我需要它,因为我需要使用来自普通函数(上面命名为 someFunction
)的全功能服务(取决于 Http
)来补充 ngrx 商店 应用程序。
这里someFunction
是一个meta reducer。
请参阅 ngrx 商店应用程序中 meta reducer 的概念。
有人可以帮忙吗?
不完全确定我理解你正在尝试做什么(没有看到更多代码),但我想你正在尝试做的事情可以通过使用提供者配置的工厂来完成
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]
}
]
}
}
}
如果您尝试在 bootstrap 之前解析某些远程数据,另一种选择是执行类似 的操作。除此之外,我可能完全不了解,因为我对 ngrx 不熟悉。
我需要能够从 NgModule
的导入部分注入和使用 angular 2 服务(下面称为 SomeService
):
...
imports: [
BrowserModule,
RouterModule.forRoot(AppRoutes, {useHash: true}),
HttpModule,
ReactiveFormsModule,
NgbModule,
StoreModule.provideStore({
currentUserAccount: someFunction(currentUserAccountReducer, someService),
authenticated: someFunction(authenticatedReducer, someService)
},
{
authenticated: false
})
],
...
我需要它,因为我需要使用来自普通函数(上面命名为 someFunction
)的全功能服务(取决于 Http
)来补充 ngrx 商店 应用程序。
这里someFunction
是一个meta reducer。
请参阅 ngrx 商店应用程序中 meta reducer 的概念。
有人可以帮忙吗?
不完全确定我理解你正在尝试做什么(没有看到更多代码),但我想你正在尝试做的事情可以通过使用提供者配置的工厂来完成
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]
}
]
}
}
}
如果您尝试在 bootstrap 之前解析某些远程数据,另一种选择是执行类似