Angular 6效果在新操作中合并来自服务调用的有效负载和数据

问题描述 投票:1回答:1

我在一个效果中从动作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}))
);`

如果有人可以帮我这个。

angular rxjs6 ngrx-effects
1个回答
0
投票

注意新的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))),
);

我希望这能帮到您 !

© www.soinside.com 2019 - 2024. All rights reserved.