Rxjs наблюдаемая ошибка выброса, когда возвращается ошибка поймана и возвращена - PullRequest
0 голосов
/ 01 марта 2019

Привет, я получаю эту ошибку: «Вы указали неверный объект там, где ожидался поток. Вы можете предоставить Observable, Promise, Array или Iterable», когда этот http-запрос вызывается из моих эффектов.

deleteAccount(accountId: string): Observable<any> {
    return this.http.delete(FUNDING_ACCOUNT_DELETE_URL
      .replace(ACCOUNT_ID, accountId)).pipe(
        timeout(2000),
        catchError(err => { 
          return err; })
      );
  }

@Effect()
  paymentOptionRemove = this.actions
    .ofType(ActionTypes.PAYMENT_OPTION_REMOVE).pipe(
      switchMap((action: PaymentOptionRemoveAction) =>
        this.service.deleteAccount(action.payload).pipe(
          map(
            _ => new PaymentOptionRemovedAction()),
          // tslint:disable-next-line:arrow-return-shorthand
          catchError(err => {
            if (err) {
              console.log(err);
            }
            return of(new PaymentOptionRemoveErrorAction());
          })
        ))
    );

1 Ответ

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

Из функции deleteAccount вы должны вернуть Observable.В блоке catchError вы пытаетесь вернуть err, чего не наблюдается.

Использование throwError из rxjs:

throwError - это функция из rxjs, которая создает Observable, которая выдает только ошибку абоненту.Предназначен для случая использования, такого как у вас.

import { throwError } from 'rxjs';

Внутри функции удаления используйте как:

return throwError(err);  
...