我正在使用ngrx在Angular2应用程序中提供状态管理。我有两个组件:“MenuComponent”和“ResultsPanelComponent”,它们订阅由同一片状态提供的不同值。通过订阅组件
我看到的问题是,“菜单”组件响应状态更改,但“结果”组件不记录状态值。
我正在调度动作来填充更高级组件中的状态。
// menu.component.ts
export class MenuComponent implements OnInit, OnDestroy {
private sub: Subscription;
newReportHeaderCount: number;
constructor(
private store: Store<AppState>,
) { }
ngOnInit(): void {
this.sub = this.store.select('results').subscribe((state) => {
console.log('MenuComponent state: ', state);
this.newReportHeaderCount = state['newReportHeaderCount'];
});
}
ngOnDestroy(): void {
this.sub.unsubscribe();
}
}
// results.component.ts
export class ResultsPanelComponent implements OnInit, OnDestroy {
private sub: Subscription;
reportHeaderSummary: ReportHeaderSummary[] = [];
constructor(
private store: Store<AppState>,
) {}
ngOnInit(): void {
this.sub = this.store.select('results').subscribe((state) => {
console.log('ResultsPanelComponent state: ', state);
this.reportHeaderSummary = state['reportHeaderSummary'];
});
}
ngOnDestroy(): void {
this.sub.unsubscribe();
}
}
当我运行我的应用程序,我看到:
MenuComponent state: Object {reportHeaderSummary: Array[0], reportHeaders: Array[0], newReportHeaderCount: 0, loading: false}
ResultsPanelComponent state: Object {reportHeaderSummary: Array[0], reportHeaders: Array[0], newReportHeaderCount: 0, loading: false}
MenuComponent state: Object {reportHeaderSummary: Array[4], reportHeaders: Array[0], newReportHeaderCount: 3, loading: false}
登录到控制台。状态发生变化时,我希望看到ResultsPanelComponent state
的更多日志语句。
ResultsPanelComponent
与MenuComponent
位于不同的模块中,但都包含在调度加载数据的操作的同一父模块中。
[更新]
我做了一个额外的行动来递增newReportHeaderCount
价值,无论从MenuComponent
或ResultsPanelComponent
出动的时候,国家是正确的,但新的值不会推送给订阅所有组件到results
切片状态。
我只看到分派动作的组件中的新状态值。
如果我移动的动作高阶组件的派遣,我只看到在MenuComponent
任何想法什么我可以做错误的状态变化?