Angular Ngrx选择器未定义实体适配器
在这件事上兜圈子。每次我使用选择器时,它都是未定义的。我检查了其他帖子,他们丢失的代码我已经有了。当使用选择器时,我总是无法定义。我也有ngrx开发工具设置。任何帮助都将不胜感激 组件:Angular Ngrx选择器未定义实体适配器,angular,ngrx,Angular,Ngrx,在这件事上兜圈子。每次我使用选择器时,它都是未定义的。我检查了其他帖子,他们丢失的代码我已经有了。当使用选择器时,我总是无法定义。我也有ngrx开发工具设置。任何帮助都将不胜感激 组件: import * as fromBusiness from '@app/@store/reducers/index'; ngOnInit(): void { const id = this.params.id; this.business$ = this.store.pipe(sele
import * as fromBusiness from '@app/@store/reducers/index';
ngOnInit(): void {
const id = this.params.id;
this.business$ = this.store.pipe(select(fromBusiness.getBusinessEntityById(), { id }))
.pipe(
map((business: BusinessModel) => {
return this.business = business;
}),
);
console.log(this.business);
}
export interface State extends EntityState<BusinessModel> {}
export const adapter: EntityAdapter<BusinessModel> = createEntityAdapter<
BusinessModel
>( {
selectId: (business: BusinessModel) => business.id,
});
export const initialState = adapter.getInitialState({});
export const businessReducer = createReducer(
initialState,
//reducer methods here, upsertone, addone etc
);
export function businessFuncReducer(state: State | undefined, action: Action) {
return businessReducer(state, action);
}
export const businessFeatureSelector = createFeatureSelector<State>(
'businesses'
);
export const {
selectIds,
selectEntities,
selectAll,
selectTotal,
} = adapter.getSelectors();
export const getAllBusinesses = createSelector(
businessFeatureSelector,
selectAll
);
功能模块
StoreModule.forFeature('businesses', fromBusiness.businessFuncReducer),
减速器:
import * as fromBusiness from '@app/@store/reducers/index';
ngOnInit(): void {
const id = this.params.id;
this.business$ = this.store.pipe(select(fromBusiness.getBusinessEntityById(), { id }))
.pipe(
map((business: BusinessModel) => {
return this.business = business;
}),
);
console.log(this.business);
}
export interface State extends EntityState<BusinessModel> {}
export const adapter: EntityAdapter<BusinessModel> = createEntityAdapter<
BusinessModel
>( {
selectId: (business: BusinessModel) => business.id,
});
export const initialState = adapter.getInitialState({});
export const businessReducer = createReducer(
initialState,
//reducer methods here, upsertone, addone etc
);
export function businessFuncReducer(state: State | undefined, action: Action) {
return businessReducer(state, action);
}
export const businessFeatureSelector = createFeatureSelector<State>(
'businesses'
);
export const {
selectIds,
selectEntities,
selectAll,
selectTotal,
} = adapter.getSelectors();
export const getAllBusinesses = createSelector(
businessFeatureSelector,
selectAll
);
导出接口状态扩展EntityState{}
导出常量适配器:EntityAdapter=createEntityAdapter<
商业模式
>( {
selectId:(business:BusinessModel)=>business.id,
});
export const initialState=adapter.getInitialState({});
export const businessReducer=createReducer(
初始状态,
//这里的减速机方法、upsertone、addone等
);
导出函数(状态:状态|未定义,操作:操作){
返回(状态、动作);
}
导出常量businessFeatureSelector=createFeatureSelector(
“企业”
);
出口常数{
SelectID,
选择实体,
选择全部,
选择总计,
}=adapter.getSelectors();
export const getAllBusinesss=createSelector(
businessFeatureSelector,
选择全部
);
reducer.index.ts
export interface State {
business: fromBusiness.State;
}
export const selectBusinessState = createFeatureSelector<fromBusiness.State>(
'businesses'
);
export const selectBusinessEntities = createSelector(
selectBusinessState,
fromBusiness.selectEntities
);
export const getBusinessEntityById = () => {
return createSelector(
selectBusinessEntities,
(entities: Dictionary<BusinessModel>, props: {id: string}) => {
return entities[props.id];
},
);
};
导出接口状态{
业务:fromBusiness.State;
}
导出常量selectBusinessState=createFeatureSelector(
“企业”
);
export const selectBusinessEntities=createSelector(
选择BusinessState,
fromBusiness.selectEntities
);
导出常量getBusinessEntityById=()=>{
返回createSelector(
选择商业实体,
(实体:字典,道具:{id:string})=>{
返回实体[props.id];
},
);
};
谢谢你在这方面的帮助。花了2天没有解决方案。附件是devtools树的屏幕截图
我建议将导入量增加一倍,并确保其正确无误。问题可能不在于使用的选择器,而在于父选择器之一?我建议只需将导入量加倍,并确保其正确。问题可能不在于正在使用的选择器,而在于父级选择器之一?事实证明,不是选择器或模块。这正是我消费它的方式。周围的例子对我不起作用,所以我用了稍微不同的方法。结果,不是选择器或模块。这正是我消费它的方式。周围的例子对我不起作用,所以我用了稍微不同的方法。我尝试了父级别,但无论我尝试什么选择器,我总是无法定义。我想知道应用程序模块是否设置正确。我有:StoreModule.forFeature('businesss',businessFuncReducer),我尝试了父级,但无论我尝试什么选择器,我总是无法定义。我想知道应用程序模块是否设置正确。我有:StoreModule.forFeature('businesss',businessFuncReducer),