2017-11-10 71 views
1

我想在HTML如下顯示的數據列表:角* ngFor返回對象的數組[錯誤:無法找到一個不同的支持對象]

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; 
     } 

這導致當JSON顯示如下:

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

// RESULT OF THE CONSOLE: 

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

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

現在,當我使用:

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

// The Result displays: 
james 

這是正確的行爲! 但是,當試圖使用* ngFor在HTML中顯示列表時,它給了我錯誤:無法找到不同的支持對象。

這是我在Home.html中HTML /離子代碼:

<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> 

任何我怎麼能正確地執行上面的?從邏輯上講,它應該工作得很好!作爲類似的console.log給出了一個正確的結果。 雖然做了大量的研究,我偶然發現了這個話題:https://github.com/angular/angular/issues/6392

說實話,我不知道它是否適合我的問題。

非常感謝!

+1

即使您命名鍵0-n,您的第一項不是數組。 {}是一個對象(不用於ngfor),[]是一個數組(你在ngfor中使用的)。 –

+0

是的,這是解決方案! – JamesAnd

回答

2

由於錯誤提示對象應該是對象的對象,根據你的JSON對象的對象應該是對象的array。你需要有適當的JSON數組,或者轉換爲對象數組。

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

如何將其轉換爲對象數組? – JamesAnd

+1

在這裏檢查https://stackoverflow.com/questions/39360863/javascript-converting-object-of-objects-to-array-of-objects – Sajeetharan

+0

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

相關問題