Angular 访问NGRX效果值中的最新存储值未定义
我有两个动作,一个叫做Angular 访问NGRX效果值中的最新存储值未定义,angular,ngrx,ngrx-store,ngrx-effects,Angular,Ngrx,Ngrx Store,Ngrx Effects,我有两个动作,一个叫做mergeGuestData,用于更新状态。在该动作触发后,我想在第一个动作完成时触发另一个动作onboardGuest。因此,当mergeGuestData调用excuteGuestActions.onboardGuest()操作时,我使用了effect whenTempCheckComplete$ = createEffect(() => { return this.actions$.pipe( ofType(GuestActions.merg
mergeGuestData
,用于更新状态。在该动作触发后,我想在第一个动作完成时触发另一个动作onboardGuest
。因此,当mergeGuestData
调用excuteGuestActions.onboardGuest()操作时,我使用了effect
whenTempCheckComplete$ = createEffect(() => {
return this.actions$.pipe(
ofType(GuestActions.mergeGuestData),
map((action) => {
return GuestActions.onboardGuest()
})
);
});
当此GuestActions.onboardGuest()
触发时,我需要访问先前修改的mergeGuestData
操作的状态,并进行服务调用。因此,我创建了另一个效果。这里的问题是guestData
未定义。如果没有这些数据,我无法提供所有服务。我做错了什么
onboardGuest$ = createEffect(() => {
return this.actions$.pipe(
ofType(GuestActions.onboardGuest),
withLatestFrom(this.store.pipe(select(selectGuest))),
//----- guestData getting undefined-------------
switchMap(([action, guestData]) => {
return this.httpClient.post(environment.urls.guestOnboard, guestData).pipe(
map(({payload}:RequestResult<GuestOnboardSuccessResponse>) => {
return GuestActions.onboardGuestSuccess({resPayload:payload})
}),
catchError((err) => {
return of(GuestActions.onboardGuestFailure({ error: err }))
})
)
})
);
});
减速器
on(GuestActions.mergeGuestData, (state, { gestRelatedData }) => {
return {
...state,
onBoardGuestInfo: {
...state.onBoardGuestInfo,
onBoardCheckList: gestRelatedData,
},
};
}),
on(GuestActions.onboardGuest, (state) => {
return { ...state, isLoading: true };
}),
on(GuestActions.onboardGuestSuccess, (state, { resPayload }) => {
return { ...state, successResponse: resPayload, isLoading: false };
}),
on(GuestActions.onboardGuestFailure, (state, { error }) => {
return { ...state, isLoading: false, error: error };
})
请包括减速器并显示减速器的初始状态
on(GuestActions.mergeGuestData, (state, { gestRelatedData }) => {
return {
...state,
onBoardGuestInfo: {
...state.onBoardGuestInfo,
onBoardCheckList: gestRelatedData,
},
};
}),
on(GuestActions.onboardGuest, (state) => {
return { ...state, isLoading: true };
}),
on(GuestActions.onboardGuestSuccess, (state, { resPayload }) => {
return { ...state, successResponse: resPayload, isLoading: false };
}),
on(GuestActions.onboardGuestFailure, (state, { error }) => {
return { ...state, isLoading: false, error: error };
})