ошибка TS2339: свойство 'catch' не существует для типа 'Observable' - PullRequest
0 голосов
/ 31 мая 2018

Не удалось добавить оператор catch.Это дает ошибку, что свойство «catch» не существует для типа «Observable

[enter image description here][1]

import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { empInterface } from './empInterface';
import { Observable } from 'rxjs';
import 'rxjs/add/operator/catch';

@Injectable({
    providedIn:'root'
})
export class DynamicempService {
    private _url: string="/assets/data/employeeDb.json";
    constructor(private localData: HttpClient) { }  

    getEmployee(): Observable<empInterface[]>{
        return this.localData.get<empInterface[]> 
        (this._url).catch(this.errorMethod);
    }

    errorMethod(error: HttpErrorResponse){
        return Observable.throw(error.message || "Server Error");
    }
}
»

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Попробуйте это:

  import { Observable, pipe } from 'rxjs';
  import { _throw } from 'rxjs/observable/throw';
  import { catchError } from 'rxjs/operators';

  getEmployee(): Observable<empInterface[]>{
    return this.localData.get<empInterface[]> 
    (this._url).pipe(
       catchError(this.errorMethod)
    );
  }

  errorMethod(error: HttpErrorResponse){
    return _throw(error.message || "Server Error");
  }
0 голосов
/ 31 мая 2018

Angular 6 использует rxjs версии 6, а оператор catch был изменен на catchError, и вы можете импортировать его следующим образом

import { map, filter, catchError, mergeMap } from 'rxjs/operators';

, и вот как вы можете использовать операторы по конвейеру:

import { map } from 'rxjs/operators';

myObservable
  .pipe(map(data => data * 2))
  .subscribe(...);

RxJS 6 Изменения - Обзор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...