Неправильное отображение трубы и обработка ошибок Angular - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть метод в сервисе, который возвращает Observable. Когда я подписываюсь на наблюдаемое, когда я вызываю метод в моем компоненте, все работает нормально, и я правильно получаю свою учетную запись:

this.service.getAccountDetails(username)
    .subscribe(account =>{
        this.podcasts.push(account);
    });

Однако, когда я попытался реализовать это, используя канал с картой и catchError, он ничего не возвращает.

this.service.getAccountDetails(username)
    .pipe(
        map(account => {
            this.podcasts.push(account);
        }),
        catchError((error: Error) => {
            //Do some error stuff
            return of(null);
        })
    );

Метод в сервисе, который я вызываю, выглядит следующим образом:

getAccountDetails(u:String): Observable<Object> { }

Очевидно, у меня должна быть какая-то досадная синтаксическая ошибка, но ради любви Бога я не могу ее найти. Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Вам не нужна карта здесь, если вы не преобразуете результат

this.service.getAccountDetails(username)
    .pipe(
        catchError((error: Error) => {
            //Do some error stuff
            return of(null);
        })
    );

this.service.getAccountDetails(username)
    .subscribe(account =>{
        this.podcasts.push(account);
    });
0 голосов
/ 04 ноября 2018

Измените его на что-то вроде этого, как JB Nizet упомянул в комментарии, вы должны подписаться,

this.service.getAccountDetails(username)
.pipe(
  catchError(this.errorHandler)
)
.subscribe((username) => this.podcasts.push(username););

и

   errorHandler(error: Error): Observable<any> {
    console.error('ERROR HANDLER', error);
    return new EmptyObservable();
  }
...