Angular store.select().subscribe()返回意外的';减速器';状态数据结构中的属性
我刚开始通过一个教程来尝试NGRX。到目前为止,一切似乎都正常,只是我的状态数据结构不知何故被破坏了,我根本找不到位置和方式 我的减速机是这样的:Angular store.select().subscribe()返回意外的';减速器';状态数据结构中的属性,angular,ngrx,Angular,Ngrx,我刚开始通过一个教程来尝试NGRX。到目前为止,一切似乎都正常,只是我的状态数据结构不知何故被破坏了,我根本找不到位置和方式 我的减速机是这样的: import * as fromRoot from '../../../state/app.state'; import { createFeatureSelector, createSelector } from '@ngrx/store'; export interface State extends fromRoot.State { cr
import * as fromRoot from '../../../state/app.state';
import { createFeatureSelector, createSelector } from '@ngrx/store';
export interface State extends fromRoot.State {
criteriaLock: CriteriaLockState;
}
export interface CriteriaLockState {
storeNames: string[];
selectedStoreName: string;
}
const initialState: CriteriaLockState = {
storeNames: [],
selectedStoreName: ''
};
const getCriteriaLockFeatureState = createFeatureSelector<CriteriaLockState>('criteria-lock');
export const getStoreNames = createSelector(
getCriteriaLockFeatureState,
state => state.storeNames
);
export const getSelectedStoreName = createSelector(
getCriteriaLockFeatureState,
state => state.selectedStoreName
);
export function reducer(state = initialState, action): CriteriaLockState {
switch (action.type) {
case 'SET_STORE_NAMES':
return {
...state,
storeNames: action.payload
};
case 'SET_SELECTED_STORE_NAME':
return {
...state,
selectedStoreName: action.payload
};
default:
return state;
}
}
CriteriaLock未定义,因为接收的数据结构未定义
criteria-lock: {
selectedStoreName: ''
}
但是
这意味着reducer函数以某种方式出现在state对象中。
这不是正确的行为,对吗?
当我想访问订阅中的状态时,我必须将选择器更改为
export const getStoreNames = createSelector(
getCriteriaLockFeatureState,
state => state.**reducer**.storeNames
);
我不知道我是如何将该属性粘贴到州结构中的,我也从未见过任何人有相同的问题。在将State对象记录到Reducer中时,我收到了正确的状态。只有在这里我才得到这个减速机对象。这似乎不正确,因为教程从未提到过类似的内容
我通过以下方式设置店铺名称:
this.store.dispatch({
type: 'SET_SELECTED_STORE_NAME',
payload: storeName
});
并将StoreModule添加到我的CriteriaLockModule中
imports: [
CommonModule,
SharedModule,
FormsModule,
StoreModule.forFeature('criteria-lock', { reducer })
]
我修正了它:
问题是从模块导入时,减速机周围存在父级问题
imports: [
CommonModule,
SharedModule,
FormsModule,
StoreModule.forFeature('criteria-lock', **{ reducer }**)
]
应该是
imports: [
CommonModule,
SharedModule,
FormsModule,
StoreModule.forFeature('criteria-lock', **reducer**)
]
那只花了我3个小时:D
imports: [
CommonModule,
SharedModule,
FormsModule,
StoreModule.forFeature('criteria-lock', **{ reducer }**)
]
imports: [
CommonModule,
SharedModule,
FormsModule,
StoreModule.forFeature('criteria-lock', **reducer**)
]