Ошибка импорта rxjs catchError для rxjs@6.3.3 - PullRequest
0 голосов
/ 14 мая 2019

Попытка импортировать catchError для rxjs v6.3.3, но импорт не работает.Я получаю сообщение об ошибке при использовании catch.

Нашел похожие вопросы, но, похоже, никто не помог мне.

Код:

import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { IWinServices } from './WinServices';
import { Observable } from 'rxjs';
import { catch } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class WinServicesService {

  private _url : string = './assets/Data/WinServicess.json'
  constructor(private http: HttpClient) { }

  getWinServices() :Observable <IWinServices[]>  {
      return this.http.get<IWinServices[]>(this._url).catch (this.errorHandler);

  }

  errorHandler(error: HttpErrorResponse) {

    return Observable.throw(error.message || "Server Error");
  }
}

Пробный Возможное решение: У меня не сработало

import { catchError } from 'rxjs/operators';
import 'rxjs/add/operator/catch';
import {Observable} from 'rxjs/Rx';

Ошибка:

Property 'catch' does not exist on type Observable<IWinServices[]>'.ts(2339)

ERROR in src/app/employee.service.ts(16,52): error TS2339: Property 'catch' does not exist on type 'Observable<IEmployee[]>'

1 Ответ

1 голос
/ 14 мая 2019

Ошибка объясняет проблему.

error TS2339: Property 'catch' does not exist on type 'Observable<IEmployee[]>'

В rxjs v6 + вы больше не связываете операторов в наблюдаемом вызове.

Вместо этого попробуйте это ...

Импортируйте как следующий import { catchError } from 'rxjs/operators';

трубу catchError как это.


return this.http.get<IWinServices[]>(this._url).pipe(
    catchError(() => {
       // error handling logic here
    })
)

Смотрите этоотличный сайт для справки.https://www.learnrxjs.io/operators/error_handling/catch.html

Последнее замечание: не используйте это import 'rxjs/add/operator/catch';, это не рекомендуется, поскольку это не объем импорта.

Надеюсь, это поможет.

...