Как я могу вызвать функцию, если ответ пуст

#angular #rxjs #ngrx-effects

#angular #rxjs #ngrx-эффекты

Вопрос:

Как я могу вызвать функцию openSnackbar, если ответ пуст, но возвращает LoadUserSuccess, если ответ не пуст. Кажется, я не могу найти решение, которое работает.

   @Effect()
  validateOtp$: Observable<Action> = this.actions$.pipe(
    ofType<otpActions.Otp>(otpActions.OTP),
    switchMap((action) => {
      return this.otpService.validateOtp(action.payload).pipe(
        map(
          (response) => new userActions.LoadUserSucess(response)

          // this.openSnackBar()
        )
      );
    })
  );

  openSnackBar() {
    this.snackBar.open('Code invalid / expired', 'Close', {
      duration: 3500,
    });
  }
  

Ответ №1:

Просто следуйте приведенному ниже примеру:

 validateOtp$: Observable <Action> = this.actions$.pipe(
    ofType<otpActions.Otp>(otpActions.OTP),
    switchMap((action) => {
        return this.otpService.validateOtp(action.payload).pipe(
            tap(x => !x amp;amp; this.openSnackBar()),
            filter(x => !!x),
            map(x => new userActions.LoadUserSucess(x))
        );
    })
);
  

Комментарии:

1. между функцией filter и map должна быть запятая