2017-11-10 1 views
1

Ich versuche HTML eine Liste von Daten anzuzeigen, in wie folgt:Angular * ngFor Array von Objekten Rückkehr [ERROR: nicht unterscheiden stützendes Objekt gefunden]

Home.ts:

this.key = 0 
objects = {} // The correct setting was objects = [] thanks! 

snapshot.forEach(doc => { 

      this.objects[this.key] = { 
      firstname: doc.id, 
      lastname: doc.data().lastname, 
      age: doc.data().age 
      } 

      this.key=this.key+1; 
     } 

Daraus ergibt sich die folgende, wenn in JSON angezeigt:

console.log(JSON.stringify(this.objects)); 

// RESULT OF THE CONSOLE: 

{ 
"0": 
    { 
     "firstname":"james", 
     "lastname":"bond", 
     "age":"87" 
    }, 

"1": 
    { 
     "firstname":"alex", 
     "lastname":"tali", 
     "age":"59" 
    } 
} 

Nun, wenn ich benutze:

console.log(this.objects[0].firstname); 

// The Result displays: 
james 

Welches ist das richtige Verhalten! Wenn ich jedoch versuche, die Liste in HTML mit dem * ngFor anzuzeigen, gibt es mir den Fehler: Kann ein anderes unterstützendes Objekt nicht finden.

Hier ist mein Code in Home.html HTML/IONIC:

<ion-grid> 
     <ion-row> 
     <ion-col col-4>First Name</ion-col> 
     <ion-col col-4>Last Name</ion-col> 
     <ion-col col-4>Age</ion-col> 
     </ion-row> 
     <ion-row> 
     <ion-col col-4 *ngFor="let firstname of objects; let i = index">{{ objects[i].firstname }}</ion-col> 
     <ion-col col-4 *ngFor="let lastname of objects; let i = index">{{ objects[i].lastname }}</ion-col> 
     <ion-col col-4 *ngFor="let age of objects; let i = index">{{ objects[i].age }}</ion-col> 
     </ion-row> 
    </ion-grid> 

Jeder, wie ich richtig die oben umsetzen können? logisch sollte es gut funktionieren! als ähnliche console.log gibt ein korrektes Ergebnis. Während ich eine Menge Forschung zu tun, stolperte ich über dieses Thema: https://github.com/angular/angular/issues/6392

Welche um ehrlich zu sein, ich bin mir nicht sicher, ob es zu meinem Problem passt oder nicht.

Vielen Dank!

+1

Ihr erstes Element ist kein Array, auch wenn Sie die Schlüssel 0-n benennen. {} Ist ein Objekt (nicht in ngfor verwendet) und [] ist ein Array (was Sie in einem ngfor verwenden). –

+0

Ja das war die Lösung !! – JamesAnd

Antwort

2

Da der Fehler sagt Objekte sollte ein von Objekten sein, nach Ihrem JSON ist es ein Objekt Objekte. Sie müssen ein richtiges JSON-Array haben oder in ein Array von Objekten konvertieren.

console.log(JSON.stringify(this.global.objects)); 
+0

Wie ist es möglich, es in ein Array von Objekten zu konvertieren? – JamesAnd

+1

überprüfen Sie hier https://Stackoverflow.com/questions/39360863/javascript-converting-object-of-objects-to-array-of-objects – Sajeetharan

+0

@JamesAnd: do 'this.objects = Object.values ​​(this.objects) ; ' – BeetleJuice

Verwandte Themen