Angular2. Anzeigen http-Antwort zu konkreten Objekt-Instanz
Gemeinsamen Ansatz zur Verarbeitung von http-response sieht so aus:
return this._http.get(url)
.map((res: Response) => res.json());
bietet Ihnen eine Observable<Object[]>
wo Object
dynamisch erstellt Art von json-de-Serialisierung.
Dann können Sie dieses Ergebnis in *ngFor="let item of result | async"
etc...
Ich würde gerne einen bestimmten Typ Instanz (d.h. mit new
- operator zum Aufruf des Typ-Konstruktors).
Versucht, verschiedene Möglichkeiten, um zu erreichen, dass so etwas wie:
.map((res: Response) => { let obj = res.json(); return new MyObject(obj.id, obj.name);})
aber immer diese Fehlermeldung: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.
Dieser Weg scheint zu funktionieren, aber es ist viel zu kompliziert und wahrscheinlich nicht effektiv:
.map((res: Response) => {
let results = <MyObject[]>[];
let obj = res.json();
obj.forEach(
function (o: any) {
results.push(new MyObject(o.id, o.name));
}
);
return results;
}
Dank!
Observable<Array<Object>>
?stackoverflow.com/questions/22885995/...
*ngFor
nur unterstützt, arrays, ObjekteSiehe auch stackoverflow.com/questions/35534959/...
Ich brauche eine Zeit, um durch die Beiträge. Ich hoffte, dass sich dort etwas gebaut in Beobachtbare zu erreichen. Ich aktualisiert meine Frage, mit der die Art und Weise, die scheint zu arbeiten, aber ich mag es nicht.
InformationsquelleAutor rook | 2016-09-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wissen, welche Art von Objekten, die Sie wollen, zu dekonstruieren, aus dem JSON (was Sie wahrscheinlich tun), können Sie erstellen Sie eine statische Methode gibt eine Instanz von Object.
Dann konvertieren der JSON-Antwort auf die Instanzen von
MyClass
:Wie das funktioniert:
.map(val => JSON.parse(val))
Nur konvertiert die Antwort auf JSON, die ein array von Objekten..exhaustMap(val => new Rx.Observable.from(val))
Wandelt jeden Wert, der in eine Beobachtbare undexhaustMap
abgeflacht werden, so dass jedes Objekt aus den JSON ausgegeben wird getrennt..map(val => MyClass.fromObject(val))
Verwendenmap
wieder konvertieren Sie jedes Objekt eine Instanz vonMyClass
.Siehe live-demo: http://jsfiddle.net/f5k9zdh1/1/
InformationsquelleAutor martin
InformationsquelleAutor lps540
Diese syntax versuchen, Sie warf es auf Ihr Objekt:
response.json()
gibt Sie ein array von Objekten. Ich aktualisiert meine Frage mit der Art und Weise, die zu funktionieren scheint, aber ich mag das nicht so.InformationsquelleAutor John Baird