angular - 使用特定类型的数据源创建材料表
问题描述
我什至不知道从哪里开始,材料文档也无法为我指明正确的方向。我想知道是否可以mat-table
使用如下所示的数据源创建一个:
[
{columnName: "First Name", rowsList: ["John","James","Mark"]},
{columnName: "Last Name", rowsList: ["Jones","Anderson", "Jacobs"]}
]
理想情况下,它看起来像这样
名 | 姓 |
---|---|
约翰 | 琼斯 |
詹姆士 | 安德森 |
标记 | 雅各布斯 |
解决方案
这个实现的关键是数据的转换
const DATA: { columnName: string; rowsList: string[] }[] = [
{ columnName: "First Name", rowsList: ["John", "James", "Mark"] },
{ columnName: "Last Name", rowsList: ["Jones", "Anderson", "Jacobs"] }
];
columns: string[] = DATA.map(x => x.columnName);
data: { [key: string]: string }[] = [];
DATA[0].rowsList.forEach((x, i) => {
const element: { [key: string]: string } = {};
DATA.forEach(x => {
element[x.columnName] = x.rowsList[i];
});
this.data.push(element);
});
在此之后,mat-table 很容易
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
<ng-container *ngFor="let column of columns">
<ng-container [matColumnDef]="column">
<th mat-header-cell *matHeaderCellDef>{{column}}</th>
<td mat-cell *matCellDef="let element"> {{element[column]}} </td>
</ng-container>
</ng-container>
<tr mat-header-row *matHeaderRowDef="columns"></tr>
<tr mat-row *matRowDef="let row; columns: columns;"></tr>
</table>
推荐阅读
- java - 浮动 Fo:从右到左(阿拉伯语)语言的领导者
- r - 如何上传 4 个 GSE12050_GSM304448.gpr 微阵列文件?
- google-apps-script - 合并 GSheet 数据时超过了 Google 脚本的最大执行时间
- pine-script - Tradingview Pine 脚本 V5
- loops - 如何在文本文件中搜索函数并根据使用haskell遇到的顺序对其进行编辑
- c# - 如何选择列表列表或对象的对象不像表格?(SQL 服务器)
- file-rename - 将根文件夹的前缀添加到目录/子目录中的所有文件
- r - 可视化 cpt.mean 图,使日期出现在 x 轴上
- r - 采用散布行的凌乱数据框(即,将每个观察块的行记入帐簿)并将书端行移动到新列中作为标识符?
- typescript - 如何使用来自 monaco.d.ts 的智能感知