Angular如何将后端传递的多条内容不同并且属性名不同的数据放在同一个表格里面,并且可以实现编辑功能,编辑后还可以将数据传给后端,并且不能破坏数据的原始结构,而且前端也不能使用for循环
时间: 2023-06-17 10:08:37 浏览: 102
要实现这样的功能,可以使用Angular Material提供的表格组件,以及Reactive Forms来构建一个响应式表单。
首先,在组件中定义一个表格数据的数组,例如:
```
tableData: any[] = [
{ id: 1, name: 'John', age: 25 },
{ id: 2, name: 'Alice', city: 'New York' },
{ id: 3, title: 'Product A', price: 100 },
];
```
这个数组包含了三条数据,每条数据的属性名不同。
接着,在HTML模板中,使用Angular Material提供的表格组件来展示这个数组:
```
<table mat-table [dataSource]="tableData">
<ng-container *ngFor="let column of tableColumns" [matColumnDef]="column">
<th mat-header-cell *matHeaderCellDef>{{ column }}</th>
<td mat-cell *matCellDef="let element">{{ element[column] }}</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="tableColumns"></tr>
<tr mat-row *matRowDef="let row; columns: tableColumns;"></tr>
</table>
```
上述代码中,`tableColumns`是一个包含所有属性名的数组,可以通过遍历这个数组来动态生成表格的列。
接着,使用Reactive Forms来创建一个响应式表单,包含了所有需要编辑的属性:
```
this.form = this.fb.group({
id: [null],
name: [null],
age: [null],
city: [null],
title: [null],
price: [null],
});
```
在编辑某一行数据时,将对应的数据填入表单中,例如:
```
editRow(row: any) {
this.form.setValue(row);
}
```
在保存修改后,可以获取表单的值,将其发送给后端:
```
saveChanges() {
const updatedRow = this.form.value;
// 发送更新请求到后端
}
```
这样,就可以实现将后端传递的多条内容不同并且属性名不同的数据放在同一个表格里面,并且可以实现编辑功能,编辑后还可以将数据传给后端,并且不能破坏数据的原始结构,而且前端也不必使用for循环。
阅读全文