Abonnieren Sie einfach die Anfrage-Methode (wie get/post/etc). Sie müssen nicht toPromise() verwenden, und ich würde empfehlen, da Angular sehr gut mit Observables funktioniert und sie sind viel mächtiger als Promises.
// Make the HTTP request:
this.http.get('/api/items').subscribe(data => {
// Handle the result from the response.
this.results = data;
});
https://angular.io/guide/http
Sorgen Sie sich nicht von diesen Observablen über abzumelden, da sie die Das Gesamt() -Methode für den Beobachter und Ziel nennen.
Es ist erwähnenswert, dass alle von HttpClient zurückgegebenen Observables kalt sind und keine Anfragen gestellt werden, bis Sie .subscribe() an sie senden.
Ich denke, Sie könnten Karte mit switchMap auch verwirren, Karte ist für die Umwandlung der emittierten Elemente innerhalb des Streams, switchMap wird häufig zur Verkettung von Observablen verwendet. http://reactivex.io/documentation/operators/map.html
Sobald Weg ist nur Aufruf '.toPromise()' auf Ihrem Observable und nutzen Sie die Funktionen, die Sie bereits kennen. Möglicherweise müssen Sie 'import 'rxjs/add/operator/toPromise' verwenden;' –
'.subscribe (...)' ist normalerweise das Ende der Kette. Siehe http://reactivex.io/rxjs/manual/tutorial.html. – jonrsharpe
Verwenden Sie '.subscribe()' auf Ihrem 'Observable' oder' .toPromise() ', aber Sie müssen sich daran gewöhnen,' .then() 'zu verwenden, da es kein' .done() 'auf einem Standard' gibt Versprechen. Ich nehme an, Sie sind an die kaputte jQuery-Implementierung gewöhnt. – Duncan