Raj*_*ath 6 angular-material angular angular7
我的材料表以以下方式显示该值:
名称|数量
芒果|10
<div class="table-cover center-table">
<div class="mat-elevation-z8 elevation-scroll-control">
<table mat-table class="full-width-table left-margin" [dataSource]="dataSource" matSort aria-label="Elements">
<!-- Name Column -->
<ng-container matColumnDef="name">
<td mat-header-cell *matHeaderCellDef >Name</td>
<td mat-cell *matCellDef="let row" class="">
<div class="cell-style padding-left">{{row.Name}}</div>
</td>
</ng-container>
<!-- quantity Column -->
<ng-container matColumnDef="quantity">
<td mat-header-cell *matHeaderCellDef>quantity</td>
<td mat-cell *matCellDef="let row">
<div class="cell-style">{{row.quantity}}</div>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"> </tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"> </tr>
</table>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但我想显示如下所示的值:
名称| 芒果
数量| 10
我怎样才能实现这个目标?任何帮助深表感谢
您可以通过以下方式做到这一点:
将数据从列转换为行:
Before:
Mango |10
Banana|5
After:
Mango|Banana
10|5
将标签作为数据的第一列:
Name|Mango|Banana
Quantity|10|5
调整您的表格以动态显示列(以便您可以拥有任意数量的列),如角度材料表文档中的示例所示:
<table mat-table [dataSource]="data" class="mat-elevation-z8">
<ng-container [matColumnDef]="column" *ngFor="let column of displayedColumns">
<th mat-header-cell *matHeaderCellDef> {{column}} </th>
<td mat-cell *matCellDef="let element"> {{element[column]}} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="columnsToDisplay"></tr>
<tr mat-row *matRowDef="let row; columns: columnsToDisplay;"></tr>
</table>
Run Code Online (Sandbox Code Playgroud)
如果不需要,您可以删除标题行
如果你想格式化第一列,你可以使用一些CSS:
td.mat-cell:nth-child(1) {
// formatting
}
另外,如果需要,您可以使用 MatColumnDef 的粘性属性来保持第一列粘性(在这种情况下,您可能希望将第一列与动态 *ngFor 循环分开,这样您就可以轻松地只保留第一列粘性)
我创建了一个有效的stackblitz 示例