首先,需要检查选择器的返回值类型是否与状态的实际类型匹配。其次,检查与选择器相关联的状态是否已被正确地更新。最后,确保选择器的参数与您实际想要查询的状态匹配。
以下是一个示例选择器和状态,以帮助解决此问题:
// selectors.ts import { createSelector } from '@ngrx/store'; import { AppState } from './app.reducer';
export const selectFeature = (state: AppState) => state.feature;
export const selectData = createSelector( selectFeature, (feature) => feature.data );
// app.reducer.ts import { createReducer, on } from '@ngrx/store'; import * as fromFeatureActions from './feature.actions';
export interface AppState { feature: FeatureState; }
export interface FeatureState { data: any; }
export const initialState: FeatureState = { data: null, };
export const featureReducer = createReducer( initialState, on(fromFeatureActions.loadDataSuccess, (state, { data }) => ({ ...state, data, })) );
在这个例子中,我们有一个名为“feature”的状态分支,其中包含一个名为“data”的属性。我们的选择器“selectData”根据状态对象中的“feature”属性来派生一个值;在这种情况下,我们选择了“data”,因为我们需要查询的就是这个属性。
在我们的reducer中,我们有一个名为“loadDataSuccess”的action,它将新的数据更新到状态对象的“data”属性上。
如果您返回null而不是数据,请检查这些部分是否正确工作,特别是检查是否在状态对象上正确更新了数据。