【发布时间】:2021-02-28 22:50:41
【问题描述】:
当我的组件初始化时,我想调度一个动作来创建“campaignDraft”对象。 如果“CampaignOverview”存在,我需要将“campaignDraft”设为相同,如果不存在,将其设为预设对象 {a: 1} 例如
问题是我正在尝试使用 Effects 来实现这一点,但我的所有操作都会导致浏览器死机。
// component.ts
ngOnInit(): void {
this.store.dispatch(getCampaignDraft());
this.campaignFormSubscription = this.store
.pipe(select(selectCampaignDraft))
.subscribe((campaignDraft: CampaignModel) => {
this.campaignForm.patchValue(campaignDraft, { emitEvent: false });
});
}
// actions
export const getCampaignDraft = createAction(CampaignDraftActionTypes.GET_CAMPAIGN_DRAFT);
// effects
getCampaignDraft$ = createEffect(() => {
return this.actions$.pipe(
ofType(fromCampaignDraftActions.getCampaignDraft),
switchMap((action) => withLatestFrom(this.store.pipe(select(selectCampaignOnly)))),
map((campaign) => fromCampaignDraftActions.createCampaignDraft({ campaign: {a: 1} }))
);
});
// reducer
on(campaignDraftActions.createCampaignDraft, (state, { campaign }) => {
return {
...campaign,
};
}),
我不知道如何检查 Store 是否有效 - “campaignOverview”是否存在以使用此对象或预设的对象调度另一个操作,请帮助。
【问题讨论】:
标签: angular ngrx ngrx-store ngrx-effects