Angular NGRX嵌套状态更新子嵌套数据
嘿,伙计们,我正在尝试实现一个在接口中有另一个实体的实体。对不起,我的英语不好。我正在尝试更新子实体,但它不起作用。我不知道代码是否有问题,或者这是一种正确的方法 在NgRx中执行嵌套状态是否好?对不起,我的英语不好。我是使用NgRx和angular的初学者Angular NGRX嵌套状态更新子嵌套数据,angular,typescript,redux,entity,ngrx,Angular,Typescript,Redux,Entity,Ngrx,嘿,伙计们,我正在尝试实现一个在接口中有另一个实体的实体。对不起,我的英语不好。我正在尝试更新子实体,但它不起作用。我不知道代码是否有问题,或者这是一种正确的方法 在NgRx中执行嵌套状态是否好?对不起,我的英语不好。我是使用NgRx和angular的初学者 //在这里,我在嵌套的子数据中传递父数据的id和要更新的数据 export const TestUpdate=createAction( “[testtttt]加载WorkFromHomes描述成功”, 道具() ); 导出接口WorkF
//在这里,我在嵌套的子数据中传递父数据的id和要更新的数据
export const TestUpdate=createAction(
“[testtttt]加载WorkFromHomes描述成功”,
道具()
);
导出接口WorkFromHomeDescription{
id:编号;
wfmId:数字;
日期:日期;
描述:字符串;
开始时间:字符串;
结束时间:字符串;
目标交付物:字符串;
成就:弦;
证据:字符串;
createdBy?:任何;
创建日期?:任何;
修改人:编号;
修改日期:日期;
employeeId:编号;
}
从家庭导出接口{
id:编号;
wfmStart:日期;
wfmEnd:日期;
employeeId:编号;
直接上级:编号;
vpId:数字;
isApprove:布尔值;
createdBy?:任何;
创建日期?:任何;
修改人:编号;
修改日期:日期;
workFromHomeDescriptions:EntityState;
}
导出接口WorkFromHomeState扩展EntityState{
加载:布尔;
加载:布尔;
错误:字符串| null;
}
导出常量适配器:EntityAdapter=createEntityAdapter();
导出常量adapterWorkDesc:EntityAdapter=createEntityAdapter();
export const initialState:WorkFromHomeState=adapter.getInitialState({
加载:false,
加载:false,
错误:null,
});
export const WorkFromHomeReducer=createReducer(
初始状态,
on(WorkFromHomeAction.test,(状态,操作)=>{
const workdata=action.WorkFromHomeDescription;
返回adapter.mapOne(
{
id:action.id,
地图:数据=>({
…数据,
workFromHomeDescriptions:adapterWorkDesc.updateOne(
{
id:workdata.id,
…工作数据,
},
data.workFromHomeDescriptions
),
}),
},
状态
);
})
);
我有偏见,但我鼓励你使用(我是作者)。有了它,你就可以更新你的状态了
// in here im passing the id of parent and the data i want to update in nested child data
export const TestUpdate = createAction(
'[testtttt] Load WorkFromHomes Description Success',
props<{ id: number; WorkFromHomeDescription }>()
);
export interface WorkFromHomeDescription {
id: number;
wfmId: number;
day: Date;
awaDescription: string;
startTime: string;
endTime: string;
targetDeliverables: string;
accomplishment: string;
evidence: string;
createdBy?: any;
dateCreated?: any;
modifiedBy: number;
dateModified: Date;
employeeId: number;
}
export interface WorkFromHome {
id: number;
wfmStart: Date;
wfmEnd: Date;
employeeId: number;
immediateSupervisorId: number;
vpId: number;
isApprove: boolean;
createdBy?: any;
dateCreated?: any;
modifiedBy: number;
dateModified: Date;
workFromHomeDescriptions: EntityState<WorkFromHomeDescription>;
}
export interface WorkFromHomeState extends EntityState<WorkFromHome> {
loaded: boolean;
loading: boolean;
error: string | null;
}
export const adapter: EntityAdapter<WorkFromHome> = createEntityAdapter<WorkFromHome>();
export const adapterWorkDesc: EntityAdapter<WorkFromHomeDescription> = createEntityAdapter<WorkFromHomeDescription>();
export const initialState: WorkFromHomeState = adapter.getInitialState({
loaded: false,
loading: false,
error: null,
});
export const WorkFromHomeReducer = createReducer(
initialState,
on(WorkFromHomeAction.test, (state, action) => {
const workdata = action.WorkFromHomeDescription;
return adapter.mapOne(
{
id: action.id,
map: data => ({
...data,
workFromHomeDescriptions: adapterWorkDesc.updateOne(
{
id: workdata.id,
...workdata,
},
data.workFromHomeDescriptions
),
}),
},
state
);
})
);