Угловой параметр 6 Pass через эффект rxjs - PullRequest
0 голосов
/ 25 октября 2018

Здравствуйте, как передать параметр payload из mergeMap в switchMap?Я использую его в clientservice.checkValideName, но хотел бы передать его в sendMessage (data, payload [1] ).

Я пробовал много вещей, но ничего не работает.(другая карта слияния или сопоставление результата checkValideName для ввода полезной нагрузки)

@Effect()  CheckValidatedName$ = this.actions$.pipe(
ofType(CheckValidatedActionTypes.VALIDATED_NAME),
map((action: ValidatedNameAction) => action.payload),
withLatestFrom(this.store.select(fromRoot.selectors.getCurrentClient)),
mergeMap(([payload, client]) =>
  this.clientService.checkValideName(client.uuid, payload[0])
),
map((result: any) => result.data),
switchMap((data: boolean) => {
  return of(this.sendMessage(data))
}),
catchError((res: any) => this.catchResponseError(res))

);

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете вернуть его как часть ответа mergeMap - вот где вы все равно потеряли его в конвейере:

mergeMap([payload, client] => {
  // now we have it, and after returning clientServiceCheck, we lose the reference to it
  return this.clientService(checkValidname(client, payload));
})
.map(result => result.data)

Вместо этого вы хотите вернуть и результат, и данные, примерно так:

mergeMap([payload, client] => {
  // now we have it, and after returning clientServiceCheck, we lose the reference to it
  return mergeMap(() => [
    of(payload)
    this.clientService(checkValidname(client, payload)),
  ]);
})
.map([payload, result] => {
  // now we have both
})
...