ich folgende Dienst haben, die fein gearbeitet, bis heute habe ich diesen Fehler bekamAngular2 Http mit RXJS beobachtbare Typeerror:.. This.http.get (...) Karte (...) Fang ist keine Funktion
Wenn ich diesen Code debuggen stürzt es ab, wenn es darum geht, Methode zu fangen.
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);
}
}
Es hat funktioniert! Vielen Dank. Es ist verrückt, dass ich diesen "Import" -Rxjs/Rx in meiner Vendors-Datei habe, wo ich meine anderen Abhängigkeiten auch für angular2 importiere, aber ich glaube, dass ich diese Bibliothek in jede Datei importieren muss, wo ich diese oder hauptsächlich verwenden möchte. ts. –
@Thierry, anscheinend das gesamte rxjs/Rx zu importieren ist keine gute Praxis. Denken Sie, dass es nicht so viel Verbesserung ist, nur die Operatoren zu importieren, die Sie brauchen? –