Angular 6 эффект слияния полезной нагрузки и данных из сервисного вызова в новом действии - PullRequest
1 голос
/ 12 марта 2019

Я получаю полезную нагрузку от действия payload: { items: Administration[], id: number} с эффектом.

Я использую сервис внутри, чтобы опубликовать новое значение и вернуть его в действии успеха.

Я хотел быпросто передайте идентификатор с результатом httpCall, но я потеряю полезную нагрузку после службы.

Я попытался mergeMap(([action, items]) => new SuccessAction({items})) после switchMap.

Но не понимаю, где икак это реализовать, что-то в этом роде,

@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}))
);`

Если кто-то может мне помочь в этом.

1 Ответ

0 голосов
/ 12 марта 2019

Позаботьтесь о новых стандартах 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))),
);

Надеюсь, это вам поможет!

...