Angular *ngFor Массив возвращаемых объектов [ОШИБКА: не удается найти другой объект поддержки]

Я пытаюсь отобразить в HTML список данных следующим образом:

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

Какое правильное поведение! Однако при попытке отобразить список в HTML с помощью *ngFor выдается сообщение об ошибке: "Не удается найти другой объект поддержки".

Вот мой код в 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> 

Любой, как я могу реализовать вышеизложенное правильно? по логике все должно работать просто отлично! так как подобный console.log дает правильный результат. Выполняя МНОГО исследований, я наткнулся на эту тему: https://github.com/angular/angular/issues/6392

Честно говоря, я не уверен, подходит ли это моей проблеме или нет.

Большое спасибо!

1 ответ

Решение

Поскольку ошибка говорит, что объекты должны быть array объектов, в соответствии с вашим JSON это объект объектов. вам нужно иметь правильный массив JSON или преобразовать в массив объектов.

console.log(JSON.stringify(this.global.objects));
Другие вопросы по тегам