我有以下這工作正常,直到今天,我得到這個錯誤服務Angular2的Http與RXJS可觀測類型錯誤:。this.http.get(...)地圖(...)美中不足的是不是一個函數
TypeError: this.http.get(...).map(...).catch is not a function.
當我調試此代碼時,它碰到catch方法。
import { Test } from "./home.component";
import { Injectable } from "@angular/core";
import { Inject } from "@angular/core";
import { Http , Response } from "@angular/http";
import { Observable } from "rxjs/Observable";
@Injectable()
export class HomeService {
public constructor(@Inject(Http) private http: Http) {}
public getData(): Observable<Test []> {
return this.http.get("./src/app/home/home-data.json")
.map(this.extractData).catch(this.handleError);
}
public extractData(res: Response) {
let body = res.json();
return body.data || { };
}
public handleError (error: any) {
// In a real world app, we might use a remote logging infrastructure
// We"d also dig deeper into the error to get a better message
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : "Server error";
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
}
它的工作!謝謝。這是瘋狂的,我有這個'import'rxjs/Rx'在我的供應商文件中,我也爲angular2導入了我的其他依賴關係,但是我相信我需要將這個庫導入到每個文件中我想要使用它或主文件中。 TS。 –
@Thierry,顯然導入整個rxjs/Rx並不是很好的做法。你認爲只導入你需要的操作員沒有太大的改進嗎? –