在Angular应用程序中,我通过调用调用功能选择器的根选择器来创建可观察的东西。
在这里,我在应用程序的根组件中设置了可观察对象:
this.loaded$ = store.pipe(select(fromRoot.selectLoaded));
这是根缩减器的(app.reducer.ts)选择器,它调用一个单独的功能选择器:
export const selectLoaded = createSelector(
fromUI.selectLoaded,
loaded => loaded
);
这是从功能缩减器(UI.reducer.ts)选择器中选择的,该选择器选择了实际的功能状态:
export const selectUIState = createFeatureSelector<State, UIState>('UI');
export const selectContactState = createSelector(
selectUIState,
state => state.contact
);
export const selectLoaded = createSelector(
selectContactState,
fromContact.loaded
);
我已经测试了可观察性本身运行良好:它正确地发出了值。
什么不起作用:发出的值未触发根组件中的Angular变化检测。
之所以会这样,是因为我仅在我的功能模块中(根本不存在根组件的情况下)谈论功能状态?
这来自功能模块:
StoreModule.forFeature(fromUI.UIFeatureKey, fromUI.reducers)
如何从根组件使用功能状态?