[英]error TS2339: Property 'catch' does not exist on type 'Observable<empInterface[]>'
[英]Property 'catch' does not exist on type 'Observable<IEmployee[]>'.ts(2339) Error is not resolved by adding import 'rxjs/add/operator/catch';
當我將鼠標懸停在.catch(this.errorHandler)
,我收到一條錯誤消息
類型'Observable'.ts(2339)上不存在屬性'catch'
我無法將catch函數導入角型打字稿。
當我將鼠標懸停在.catch(this.errorHandler)
,我收到一條錯誤消息
類型'Observable'.ts(2339)上不存在屬性'catch'
根據另一個堆棧文章: 屬性'catch'在類型'Observable <any>'中不存在,我應該添加:
import 'rxjs/add/operator/catch'
我也嘗試導入
import {Observable} from 'rxjs/Rx';
和
import { catchError } from 'rxjs/operators';
並使用catchError代替catch。
這些都不起作用
import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { IEmployee } from './employee';
import { Observable, fromEventPattern } from 'rxjs';
import 'rxjs/add/operator/catch';
import {catchError} from "rxjs/operators"
import 'rxjs/add/observable/throw';
@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")
}
}
兩個問題:
使用catchError
不能catch
與.pipe()一起使用
return this.http.get<IEmployee[]>(this._url) .pipe(catchError(this.errorHandler));
試試看(catchError和throwError):
import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { IEmployee } from './employee';
import { Observable, fromEventPattern, throwError} from 'rxjs';
import {catchError} from "rxjs/operators"
@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)
.pipe(catchError(this.handleError));
}
handleError(error: HttpErrorResponse) {
//throwError instead of Observable.throw
return throwError(error.error.message ||"Server Error");
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.