【发布时间】: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