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中发送整个数据。