【发布时间】:2018-08-10 04:26:57
【问题描述】:
我有一个包含多个功能模块的 Angular 应用程序,我正在尝试设置 ngrx 商店。我的想法是让每个模块负责自己的状态。
// app.module.ts
...
imports: [
...
StoreModule.forRoot(reducers),
EffectsModule.forRoot([]),
]
// first.module.ts
...
imports: [
...
StoreModule.forFeature('first', firstReducer),
EffectsModule.forFeature(firstEffects),
]
//second.module.ts
...
imports: [
...
StoreModule.forFeature('second', secondReducer),
EffectsModule.forFeature(secondEffects),
]
在每个第一个和第二个 reducer 中,我使用 firstState 和 secondState 扩展 appState。一切正常,我可以看到正确构建的状态,但我遇到了一个我不知道如何解决的问题。
SecondModule 包含一个从 firstModule 中的 a 组件实例化的哑组件。这个哑组件有一个按钮,当单击该按钮时需要发出一个 http 请求,并在请求成功时为父组件发出一个事件以得到通知。
// secondModule.dumbComponent.ts(在ngrx之前)
click() {
this.testService.do()
.subscribe(result => {
this.event.emit();
});
}
现在我正在迁移到 ngrx,我已经更改了上面的内容以调度一个动作:
// secondModule(在ngrx之后)
click() {
this.store.dispatch(new fromSecondModuleActions.do());
}
第二个模块具有调用 this.testService.do() 的效果,但现在我被困在尝试与 firstModule 中的父组件通信,请求 do() 已成功,因此它可以按指示行动。我应该在 firstModule 中监听属于 secondModule 的动作吗?
【问题讨论】: