我在一个效果中从动作payload: { items: Administration[], id: number}
获得了一个有效载荷。
我在里面使用一个服务来发布新值并在一个成功的操作中返回它。
我想用httpCall的结果传递id,但是在服务之后我会松开有效负载。
我在switchMap之后尝试了mergeMap(([action, items]) => new SuccessAction({items}))
。
但是真的不明白在哪里或如何实现它,类似的东西,
@Effect() update$: Observable<Action> = this.actions$.pipe(
ofType<UpdateAction>(ActionTypes.UPDATE),
switchMap(action => this.service.update(action.payload.items).pipe(
map(response => response.items }),
catchError(error => of(new FailureAction({error}))
))),
mergeMap(([action, items]) => new UpdateAction({action.payload.id, items}))
);`
如果有人可以帮我这个。
注意新的Rxjs标准,你实际上是在管道中使用管道。问题是您正在使用管道中丢失的数据(有效负载),您可以将其保留在其中,或者您可以使用withLatestFrom()
重新获取信息。
@Effect() update$: Observable<Action> = this.actions$.pipe(
ofType<UpdateAction>(ActionTypes.UPDATE),
switchMap(action => ({ payload: of(action.payload), response: this.service.update(action.payload.items)})),
map(data => new UpdateAction({id: data.payload.id, items: data.response.items})),
catchError(error => of(new FailureAction(error))),
);
我希望这能帮到您 !