Как я могу сделать * ngFor в массиве объектов, которые я не знаю, свойство name? - PullRequest
2 голосов
/ 14 февраля 2020

У меня есть этот массив с именем dadosRelatorio, который мне нужно перебрать в моем шаблоне, этот массив я получаю в запросе http:

[{"id": 1,
  "name": "a",
  "class":[{
     "Inglês":[{
        "id": 1,
        "code": "teste"
     },
     {
        "id": 2,
        "code": "teste 2"
     }],
     "Espanhol":[{
        "id": 1,
        "code": "a"
     }]
   }]
}]

Как я могу перебирать объекты внутри класса, если у них разные имена собственности? Иногда имя может быть "Inglês", а иногда может быть "Espanhol" и другие имена ...

Когда я знаю название объекта, я делаю это так:

<div *ngFor="let aluno of dadosRelatorio" class="div-aluno">
       <span>Aluno: {{ aluno.name }}</span>
       <div *ngFor="let classe of aluno.class">
          <div *ngFor="let idioma of classe. ???>

          </div>
       </div>
</div>

Но Как я могу перебрать объект внутри класса?

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

Вы можете выполнить итерацию, используя keyvalue трубу, как показано ниже:

<div *ngFor="let aluno of dadosRelatorio" class="div-aluno">
    <span>Aluno: {{ aluno.name }}</span>
    <div *ngFor="let classe of aluno.class | keyvalue">
        <div> {{classe.key}}</div>
        <div *ngFor="let type of classe.value | keyvalue">
            {{type.key}}
            <div *ngFor="let data of type.value | keyvalue">
                {{data.value.id }}
                {{data.value.code }}
            </div>
        </div>
    </div>
</div>
1 голос
/ 14 февраля 2020

Вы можете перечислить ключи объекта, используя Object.keys. См. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys.

edit: Вы также можете использовать канал значения ключа, как описано в официальной документации: https://angular.io/api/common/KeyValuePipe

Я думал была также директива ngForIn, но я не могу найти do c.

...