【问题标题】:NGRX Nested state update child nested dataNGRX 嵌套状态更新子嵌套数据
【发布时间】:2021-04-27 03:00:14
【问题描述】:

大家好,我正在尝试实现一个在接口内具有另一个实体的实体。对不起,可能英语不好。我正在尝试更新子实体,但它不起作用。我不知道代码是否有问题,或者这样做是否正确。

在 NgRx 中做嵌套状态好不好?抱歉英语不好。我真的是使用 NgRx 和 angular 的初学者

// 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
    );
  })
);

【问题讨论】:

    标签: angular typescript redux entity ngrx


    【解决方案1】:

    我有偏见,但我鼓励您使用ngrx-immer(我是作者)。有了它,您将能够更新您的状态。

    【讨论】:

      猜你喜欢
      • 2017-04-30
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 2020-04-27
      • 2018-09-29
      • 2020-03-14
      相关资源
      最近更新 更多