类型“ Observable <iemployee []>”上不存在属性“ catch”

时间:2018-11-02 10:04:48

标签: javascript angular

我是新手。目前,我正在学习角度6功能。 当我尝试处理错误时,会出现类似的问题,

  

未找到模块:错误:无法解析“ rxjs / add / observable / throw”   'D:\ WORKSPACE \ Angular5 \ binding \ src \ app'

     

未找到模块:错误:无法解析“ rxjs / add / operator / catch”   'D:\ WORKSPACE \ Angular5 \ binding \ src \ app'

     src / app / employee.service.ts(20,14)中的

ERROR:错误TS2339:属性   类型“可观察”不存在“捕获”

这是我的employee.service.ts

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

//It self injectable defendency.
@Injectable({
  providedIn: 'root'
})
export class EmployeeService {

  private _url: string = "/assets/data/employees.json";

  constructor(private http: HttpClient) { }

  getEmployees(): Observable<IEmployee[]>{
    return this.http.get<IEmployee[]>(this._url)
            .catch(this.errorHandler);                    
  }

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

employee.ts

export interface IEmployee{
    id : number,
    name : String,
    age : number
}

我尝试使用波纹管链接解决此问题。但是我找不到我的问题的答案。

Property 'catch' does not exist on type 'Observable'Angular HTTP GET with TypeScript error http.get(…).map is not a function in [null]

请给我一些解决方案。谢谢。

1 个答案:

答案 0 :(得分:1)

在angular 6中,我们使用rxjs 6,您的示例对旧版本的angular正确,您可能需要阅读有关rxjs 6的更多信息

尝试这种方式

  getEmployees(): Observable<IEmployee[]>{
    return this.http.get<IEmployee[]>(this._url)
               .pipe(catchError(this.handlerError));
   }

catch / catchErrorRxJS 6 Changes