Angular NGRX嵌套状态更新子嵌套数据

Angular NGRX嵌套状态更新子嵌套数据,angular,typescript,redux,entity,ngrx,Angular,Typescript,Redux,Entity,Ngrx,嘿,伙计们,我正在尝试实现一个在接口中有另一个实体的实体。对不起,我的英语不好。我正在尝试更新子实体,但它不起作用。我不知道代码是否有问题,或者这是一种正确的方法 在NgRx中执行嵌套状态是否好?对不起,我的英语不好。我是使用NgRx和angular的初学者 //在这里,我在嵌套的子数据中传递父数据的id和要更新的数据 export const TestUpdate=createAction( “[testtttt]加载WorkFromHomes描述成功”, 道具() ); 导出接口WorkF

嘿,伙计们,我正在尝试实现一个在接口中有另一个实体的实体。对不起,我的英语不好。我正在尝试更新子实体,但它不起作用。我不知道代码是否有问题,或者这是一种正确的方法

在NgRx中执行嵌套状态是否好?对不起,我的英语不好。我是使用NgRx和angular的初学者

//在这里,我在嵌套的子数据中传递父数据的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
    );
  })
);