#javascript #html #angular
#javascript #HTML #angular
Вопрос:
У меня есть набор данных JSON, который сам по себе является массивом, и каждый объект может содержать подмассивы.
Мне нужно показать элементы во внутреннем вложенном массиве как элементы родительского массива, которые будут отображаться с помощью Angular NgFor.
Ниже приведен мой формат ввода:
[{
'id': 1,
'title': 'One',
'data': [{
'id': 200,
'dataset': [{
'id': 300,
'name': 'Duke',
},
{
'id': 301,
'name': 'Bajaj'
}
]
}]
}]
Мне нужно отобразить как:
1 One (outer element)
300 Duke (innermost element)
301 Bajaj
Комментарии:
1. что вы пробовали? с какой проблемой вы столкнулись???
2. Я попробовал ngFor внутри родительского ngFor, но не смог получить представление о том, как получить ссылку на третий уровень.
3. вы можете использовать канал KeyValue для упрощения этого цикла
Ответ №1:
Вам нужно выполнить итерацию по данным. Используйте *ngFor
. Для третьего уровня вам может понадобиться еще один вложенный *ngFor
, поскольку data
это снова массив внутри другого массива
В html-файле
<ul *ngFor="let item of data; let i = index" [attr.data-index]="i">
<li>{{item.title}}</li>
<li *ngFor="let elem of item.data; let x = index2">
<div *ngFor="let name of elem.dataset; let y = index3">
<span>{{name.id}}</span><span>{{name.name}}</span>
</div>
</li>
</ul>
В файле компонента
export class AppComponent implements OnInit {
name = 'Angular';
data;
ngOnInit() {
this.data = [{
'id': 1,
'title': 'One',
'data': [{
'id': 200,
'dataset': [{
'id': 300,
'name': 'Duke',
},
{
'id': 301,
'name': 'Bajaj'
}
]
}]
}]
}
}
Вот демонстрация