NgRx selector未返回数值而是返回整个CounterState对象如何解决
问题根因
你没有基于Feature Selector做属性提取,直接把Feature Selector的返回值当成了计数器数值使用:
createFeatureSelector<CounterState>('counter')的作用是获取对应feature模块的完整状态对象,也就是你控制台输出的{counter: 1, loaded: true, loading: false}结构,它本身不会自动提取内部的counter数值字段。- 你需要额外创建一个派生选择器,从完整状态里提取你需要的计数器值。
修正写法示例
修改你的counter.selectors.ts文件,补充派生选择器即可:
// 1. 原有Feature Selector,用来获取整个CounterState export const selectCounterState = createFeatureSelector<CounterState>('counter'); // 2. 新增派生选择器,专门提取计数器数值 export const selectCurrentCount = createSelector( selectCounterState, (state) => state.counter );
后续在组件中订阅selectCurrentCount,即可得到预期的1、2、3数值结果。
内容的提问来源于stack exchange,提问作者Morrowyn
相关产品推荐
相关产品推荐

