2016-11-09 3 views
0

In meinem Angular 2-Anwendung habe ich Führer eine Klasse bekommt:Weitere Informationen im Objekt gespeichert

export class Guide{ 
    id: number; 
    name: string; 
} 

Wenn ich Daten speichere in einem Objekt dieser Klasse, Angular mehr Variablen erstellt, abhängig von der Antwort . Wenn ich eine Antwort wie:

{ 
    "id": 1, 
    "name": "Guide", 
    "created_at": "2016-11-04T08:50:39+0000" 
} 

dann mein Objekt vom Typ Guide hat auch die Variable „created_at“ mit dem Wert von „created_at“. Wie kann ich die beiden Variablen id und name in meinem Objekt speichern?

+0

Dies ist aufbauen müssen, was passiert, wenn Sie 'JSON.parse'. Die Eingabe hat nichts mit Laufzeitverhalten zu tun. Löschen Sie einfach, wenn es ein Problem ist. Oder ignoriere es einfach –

+0

Ich benutze 'JSON.parse' nicht. Ich benutze: 'this.guideService.getGuide(). Subscribe (guide => { this.guide = guide; });' – Oudstand

+0

Irgendwo wird es benutzt. Wahrscheinlich von Angular 'res.json()'. –

Antwort

1

Überschreibt Ihr Objekt mit einem neuen Objektführer es wirft es nicht, deshalb erhalten Sie zusätzliche Werte. Objekte arbeiten als Referenz und Sie überschreiben die Referenz.

Wenn Sie mit Typoskript versuchen so etwas wie:

this.guide = <Guide>guide; 

Obwohl ich nicht sicher bin, wird dies die anderen Werte zu eliminieren.

Die andere Alternative ist, dass Sie einen Konstruktor auf Führer Objekt

export class Guide{ 
    constructor(object:any) 
    { 
    this.id = object.id; 
    this.number = object.number; 
    } 

    id: number; 
    name: string; 
} 

dann rufen Sie es wie folgt

this.guide = new Guide(guide); 
+0

'this.guide = guide;' wird keine Eigenschaften entfernen, da es zur Laufzeit gleich ist als die Version ohne Typumwandlung. Ihre andere Version würde funktionieren. Oder kopieren Sie einfach alle bekannten Eigenschaften des Objekts, anstatt für jedes Ereignis ein neues zu erstellen. Wie 'this.guide.id = guide.id; this.guide.number = guide.number; 'Dies könnte auch in einer Funktion eingekapselt sein. – Matthias247

+0

Ja, das ist, was ich dachte. Konstruktor ist netter, weil Sie es einmal tun, und Sie können Ihre Parselogik einmal dort setzen. –

Verwandte Themen