Ich bekomme diesen sehr ärgerlichen Fehler, wenn ich meinen Code von einer Unix-Umgebung aus führe. Das funktioniert gut, wenn ich den Code lokal durch ng serve
laufen, aber wenn ich den Code auf meinem Server bereitstellen, hält dieser Fehler alle Programmausführung:Observable .Catch ist keine Funktion
ERROR TypeError: this.http.get(...).catch is not a function
Google Ergebnisse Zustand, dass ich rxjs importieren sollte Namespaces direkt von ihrem Standort und nicht durch das Rxjs/Rx-Bundle, aber ich bekomme diesen Fehler unabhängig. Andere Ergebnisse weisen darauf hin, dass ich den Import von rxjs-Operatoren möglicherweise verpasst habe, aber sie sind definitiv in meinem Fall enthalten.
Ich habe sogar die mitgelieferten Quellkarten mit DevTools überprüft, und die Operatoren sind im Browser enthalten.
Kann mir jemand sagen, warum ich diesen Fehler bekomme? Ich benutze rxjs:^5.5.2
Das ist mein Code.
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';
@Injectable()
export class MyService {
constructor(private http: HttpClient) {}
all(): Observable<any> {
return this.http.get<any>('url')
.catch(err => this.handleError(err));
}
handleError(error) {
return Observable.throw(error);
}
}
EDIT Basierend auf @ unter Jota.Toledo Kommentar, werde ich den Code mit dieser Methode bieten:
this.myService.all().subscribe(
result => {
this.isLoading = false;
if (result) {
this.clients = result;
}
},
error => this.isLoading = false
);
wie dies in abonnieren zwei Callback-Funktionen geben, das gleiche wie "Verwenden Sie die Fangmethode irgendwo, bevor der Operator hinzugefügt wird"?
Welche Version von RXJS verwenden Sie? – Aravind
Bearbeitet die Frage @Aravind –
Sind Sie sicher, dass das Problem von diesem Code-Snippet kam? der Operator-Import ist in Ordnung, höchstwahrscheinlich verwenden Sie die Fangmethode irgendwo, bevor der Operator hinzugefügt wird –