Ich frage mich, was der beste Weg ist, die HTTP-Antwort von einer Get-Anfrage auf eine Klasse anstelle eines grundlegenden Javascript-Objekts zuzuordnen.Angular 2 map http Antwort auf Instanz der Klasse
In meinem aktuellen Versuch ich einfach tun new ClassName(data)
, aber es könnte eine obskure Angular angeben und völlig genial Weg, dies zu tun, dass ich nicht weiß.
Hier ist meine aktuellen Code:
getPost(id:number){
return this._http.get(this._postsUrl+'/'+id)
.map(res => new Post(res.json().data))
.do(data => console.log(data))
.catch(this.handleError);
}
Ich brauche Stellen Sie eine Klasse zu sein und nicht nur eine Schnittstelle, weil ich Methoden innen haben.
folgte ich das HeroTutorial und das http „Entwicklerhandbuch“ zusammen und in ihrer getHeroes
Methode, die sie tun:
getHeroes() {
return this.http.get(this._heroesUrl)
.map(res => <Hero[]> res.json().data)
.catch(this.handleError);
}
ich irgendwie erwartet, dass der <Hero[]>
Teil, genau das zu tun: die Heldenklasse nehmen und neue Instanzen erstellen davon, aber meine Tests zeigen, dass es nicht, das ist so ziemlich nur für Typescript zu wissen, was zu erwarten ist.
Irgendwelche Ideen? Vielen Dank!
Dies hängt nicht mit Angular oder Http zusammen, sondern nur mit TypeScript => wie JSON zu einer konkreten Klasseninstanz deserialisiert wird. –
'neuer ClassName (data)' ist vollständig gültig, man kann Operatoren verketten und mappen, filtern, reduzieren ... Observablen egal was sie umhüllen (; – Sasxa
@ GünterZöchbauer Sieht so aus als hättest du recht, eine schnelle Suche nach denen Englisch: www.doc-o-matic.com/webhelp/opHTMLHelp.html – Growiel