Доступ к полезной нагрузке действия после switchmap (вызов API) в ngrx Effect - PullRequest
0 голосов
/ 27 апреля 2020
 saveQuiz$ = createEffect(() =>
    this.actions$.pipe(
      ofType(quizActions.addQuiz),
      map(action => action.saveQuiz),
      switchMap((quiz) => this.quizDataService.postQuiz(quiz)),
      tap((quizId) => console.log('NEED THE ACTION PAYLOAD HERE')),
      map((quizId:number) => quizActions.addQuizSuccess({quiz:{ id:quizId }})),
      catchError(() => EMPTY)
    )
  );

Это эффект, который я создал, проблема в том, что мне нужно получить доступ к action.payload после switchmap (which calls the api). Есть ли способ, которым я могу это сделать?

1 Ответ

1 голос
/ 27 апреля 2020

Вы можете сделать что-то вроде этого:

import { combineLatest, of } from 'rxjs';
.....
saveQuiz$ = createEffect(() =>
    this.actions$.pipe(
      ofType(quizActions.addQuiz),
      map(action => action.saveQuiz),
      switchMap((quiz) => { return combineLatest(of(quiz), this.quizDataService.postQuiz(quiz)); }),
      tap(([quizAction, quizId]) => console.log(`${quizAction}, ${quizId}`)),
      map(([, quizId]) => quizActions.addQuizSuccess({quiz:{ id:quizId }})),
      catchError(() => EMPTY)
    )
  );
...