Angular 对象数组作为mat表中的数据源
我在这个结构中有一个对象数组:Angular 对象数组作为mat表中的数据源,angular,mat-table,Angular,Mat Table,我在这个结构中有一个对象数组: data = [ { course: 'Angular', students: [ {name: '', enrolled_date: '', email: ''}, {name: '', enrolled_date: '', email: ''}, {name: '', enrolled_date: '', email: ''} ] }, { course: 'React',
data = [
{
course: 'Angular',
students: [
{name: '', enrolled_date: '', email: ''},
{name: '', enrolled_date: '', email: ''},
{name: '', enrolled_date: '', email: ''}
]
},
{
course: 'React',
students: [
{name: '', enrolled_date: '', email: ''},
{name: '', enrolled_date: '', email: ''},
{name: '', enrolled_date: '', email: ''}
]
},
{
course: 'React Native',
students: [
{name: '', enrolled_date: '', email: ''},
{name: '', enrolled_date: '', email: ''},
{name: '', enrolled_date: '', email: ''}
]
}
]
我的目标是在每个课程的mat表格中显示这些学生数据。预计表格为:
__________________________________
|Name | Enrolled Date | Email |
------------------------------------
|ANGULAR |
---------
|Stu1 | 20-09-2020 | stu1@gmail |
-----------------------------------
|Stu2 | 17-09-2020 | stu2@gmail |
-----------------------------------
|Stu3 | 23-09-2020 | stu3@gmail |
-----------------------------------
|REACT |
--------
|Stu1 | 20-01-2020 | stu1@gmail |
-----------------------------------
|Stu2 | 17-01-2020 | stu2@gmail |
-----------------------------------
|Stu3 | 25-01-2020 | stu3@gmail |
-----------------------------------
|REACT NATIVE |
--------
|Stu1 | 20-05-2020 | stu1@gmail |
----------------------------------
|Stu2 | 22-05-2020 | stu2@gmail |
-----------------------------------
|Stu3 | 16-05-2020 | stu3@gmail |
-----------------------------------
我需要循环学生数据,这也是一个数组。因此,我通过循环mat table将data.students发送到mat table数据源
<ng-container *ngFor="let eachObj of data">
<table mat-table [dataSource]="eachObj.students">
<ng-container matColumnDef="name">...</ng-container>
<ng-container matColumnDef="date">...</ng-container>
<ng-container matColumnDef="email">...</ng-container>
</table>
</ng-container>
...
...
...
基本上,上面的代码将从数据数组中拾取第一个对象并呈现表。然后拾取第二个对象,再打印一张表,然后重复
我知道这不是最好的办法。我能在不操纵数据结构的情况下获得更好的方法吗?您可以将对象数组转换为更简单的数组,然后将此简单数组打印到表中
data=[
{
课程:'角度',
学生:[
{姓名:'',注册日期:'',电子邮件:'},
{姓名:'',注册日期:'',电子邮件:'},
{姓名:'',注册日期:'',电子邮件:'}
]
},
{
课程:“反应”,
学生:[
{姓名:'',注册日期:'',电子邮件:'},
{姓名:'',注册日期:'',电子邮件:'},
{姓名:'',注册日期:'',电子邮件:'}
]
},
{
课程:“本地反应”,
学生:[
{姓名:'',注册日期:'',电子邮件:'},
{姓名:'',注册日期:'',电子邮件:'},
{姓名:'',注册日期:'',电子邮件:'}
]
}
];
设newData=[];
for(设i=0;i
const STUDENT_DATA=[
{
课程:'角度',
学生:[
{姓名:'A',注册日期:'',电子邮件:'a@gmail.com'},
{姓名:'B',注册日期:'',电子邮件:'b@gmail.com'},
{姓名:'C',注册日期:'',电子邮件:'c@gmail.com'}
]
},
{
课程:“反应”,
学生:[
{姓名:'D',注册日期:'',电子邮件:'d@gmail.com'},
{姓名:'E',注册日期:'',电子邮件:'e@gmail.com'},
{姓名:'F',注册日期:'',电子邮件:'f@gmail.com'}
]
},
{
课程:“本地反应”,
学生:[
{姓名:'G',注册日期:'',电子邮件:'g@gmail.com'},
{姓名:'H',注册日期:'',电子邮件:'h@gmail.com'},
{姓名:'I',注册日期:'',电子邮件:'i@gmail.com'}
]
}
]
dataSource=STUDENT_DATA.reduce((acc,{course,students})=>([…acc,{course,isGroupBy:true},…students]),[])
console.log(数据源)代码>您是否需要该数据结构?同样的table@AlbertoValerio对我还想在dataSource中发送整个数据。