#angular #typescript #loops #ngfor
#angular #typescript #циклы #ngfor
Вопрос:
У меня есть такой массив
array = [
{
naslov: 'Naslov1',
podnaslov: 'Podnaslov1',
odgovori: {
odgovor0: 'Odgovor 11',
odgovor1: 'Odgovor 12'
}
},
{
naslov: 'Naslov2',
podnaslov: 'Podnaslov2',
odgovori: {
odgovor0: 'Odgovor 21',
odgovor1: 'Odgovor 22'
}
},
{
naslov: 'Naslov3',
podnaslov: 'Podnaslov3',
odgovori: {
odgovor0: 'Odgovor 31',
odgovor1: 'Odgovor 32'
}
}
];
Я пытаюсь выполнить цикл внутри html подобным образом, но мне не удалось получить поле одговори. Вот мой html
<div *ngFor="let item of array, let i=index">
<h1>{{item.naslov}}</h1>
<p>{{item.podnaslov}}</p>
<div *ngFor="let odgovor of item.odgovori[i], let i=index">
<p>{{odgovor}}{{i}}</p>
</div>
</div>
Комментарии:
1.
odgovori
является объектом, а не массивом. Попробуйте KeyValuePipe .
Ответ №1:
Поскольку odgovori
это объект, а не массив, вам нужно будет использовать keyvalue
канал: https://angular.io/api/common/KeyValuePipe
<div *ngFor="let odgovor of item.odgovori | keyvalue, let i=index">
<p>{{odgovor.value}}{{i}}</p>
</div>
Или, судя по ключам в вашем odgovori
объекте, вы, вероятно, могли бы сделать это следующим образом:
<div *ngFor="let odgovor of item.odgovori | keyvalue">
<p>{{odgovor.key}}</p>
</div>
Ответ №2:
Попробуйте этот код.
<div *ngFor="let item of array, let i=index">
<h1>{{item.naslov}}</h1>
<p>{{item.podnaslov}}</p>
<div *ngFor="let odgovor of item.odgovori | keyvalue, let i=index">
<p>{{odgovor.value}}</p>
</div>
</div>