我正在使用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
任何想法什麼我可以做錯誤的狀態變化?