У меня есть вложенная структура JSON, которая должна быть представлена в таблице.Структура:
students = [
{
"id": "1",
"name": "Ram",
"subjects": [
{
"id": "101",
"name": "Maths",
"exams": [
{
"id": "1",
"name": "exam1",
"score": "90"
},
{
"id": "2",
"name": "exam2",
"score": "80"
}
]
},
{
"id": "102",
"name": "English",
"exams": [
{
"id": "1",
"name": "exam1",
"score": "95"
},
{
"id": "2",
"name": "exam2",
"score": "85"
}
]
}
]
},
{
"id": "2",
"name": "Ajay",
"subjects": [
{
"id": "101",
"name": "Maths",
"exams": [
{
"id": "1",
"name": "exam1",
"score": "80"
},
{
"id": "2",
"name": "exam2",
"score": "90"
}
]
},
{
"id": "102",
"name": "English",
"exams": [
{
"id": "1",
"name": "exam1",
"score": "85"
},
{
"id": "2",
"name": "exam2",
"score": "95"
}
]
}
]
}
];
Я использую p-table из pringng .Мне нужно иметь представление о таблице следующим образом:
Может ли кто-нибудь поделиться своим опытом рендеринга вложенных json.
Я уже пробовал вложенные таблицы ивложенные циклы в div, но макет испорчен.
Пример кода с p-таблицей (первичное значение):
<p-table #dt [value]="students" [responsive]="true" [paginator]="true" [rows]="5"
[rowsPerPageOptions]="[5,10,25,50]" [autoLayout]="true" [globalFilterFields]="['name']" [scrollable]="true" scrollHeight="400px" frozenWidth="300px" >
<ng-template pTemplate="header">
<tr class="table-header">
<th style="width:18%" class="table-header-column" >
<span>Student Name</span>
</th>
<th style="width:8%" class="table-header-column" rowspan="2">
Subject
</th>
<th style="width:6%" class="table-header-column" rowspan="2">
Marks
</th>
</tr>
<tr class="table-header">
<th>
<input placeholder="Search Student" pInputText size="25" type="text"
(input)="dt.filterGlobal($event.target.value, 'contains')">
</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-student>
<div *ngFor="let subject of student.subjects; index as i" class="table-cell-color">
<tr *ngFor="let exam of subject.exams; index as j" class="table-cell-color">
<td>{{student.name}}</td>
<td>{{subject.name}}</td>
<td>{{exam.score}}</td>
</tr>
</div>
</ng-template>
</p-table>
Выход:
Образец таблицы mdb с mdbBootstrap:
<table class="table table-bordered" mdbTable mdbTableScroll scrollY="true" scrollX="true" >
<thead>
<tr class="table-header">
<th >Student Name</th>
<th >Subject</th>
<th >Marks</th>
</tr>
</thead>
<tbody>
<tr mdbTableCol *ngFor="let student of students" >
<div *ngFor="let subject of student.subjects;">
<div *ngFor="let exam of subject.exams; index as i">
<td >{{student.name}}</td>
<td >{{subject.name}}</td>
<td >{{exam.name}}</td>
</div>
</div>
</tr>
</tbody>
</table>
Выход:
Было бы здорово, если бы кто-то мог поделиться своими мыслями.Я открыт для переключения на любую другую библиотеку, если это необходимо.