自定义 Angular Material 2 数据表 table header object
Custom Angular Material 2 DataTable table header by object
我有一个普通的 Material 2 DataTable,我想通过 object
自定义 table header
例如:
<mat-form-field style="width:100%">
<input matInput (keyup)="applyFilter($event.target.value)" placeholder="Filter">
</mat-form-field>
<div class="mat-elevation-z8">
<table mat-table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="{{item}}" *ngFor="let item of old_title_list">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{item}} </th>
<td mat-cell *matCellDef="let row"> {{row[item]}} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;">
</tr>
</table>
<mat-paginator [pageSizeOptions]="[5, 10, 25, 100]" [pageSize]="25" showFirstLastButtons></mat-paginator>
</div>
它成功显示 table,但是 th
只是显示 data_list
object 中定义的项目名称。
所以我希望我应该将代码更改为如下所示:
<ng-container matColumnDef="{{item.data}}" *ngFor="let item of new_title_list">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{item.title}} </th>
<td mat-cell *matCellDef="let row"> {{ row[item.data] }} </td>
</ng-container>
我希望它可以通过按键获取 header 值,但它没有。我应该怎么办 ?
示例数据:
var old_title_list = ['aaaaa', '1111', '2222', '3333'];
var data_list: [{
aaaaa: 'World',
'1111': 'this is 1111',
'2222': 'this is 2222',
'3333': 'this is 3333',
},{
aaaaa: 'World',
'1111': 'this is 1111',
'2222': 'this is 2222',
'3333': 'this is 3333',
},{
aaaaa: 'World',
'1111': 'this is 1111',
'2222': 'this is 2222',
'3333': 'this is 3333',
}];
var new_title_list = [
{data: 'aaaaa', title: 'Hello'},
{data: '1111', title: '1'},
{data: '2222', title: '2'},
{data: '3333', title: '3'},
];
您的商品是 object。必须通过item.keys()获取object的键,才能使用键数组显示列名。你可以尝试这样的事情:
<ng-container matColumnDef="{{item.keys()[i]}}" *ngFor="let item of data_list; let i = index">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{item.keys()[i]}} </th>
<td mat-cell *matCellDef="let row"> {{ (row[item.data] }} </td>
</ng-container>
如果您想使用 title_list 数组中的标题,您可以使用此代码:
<ng-container matColumnDef="{{title_list[i].title}}" *ngFor="let item of data_list; let i = index">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{title_list[i].title}} </th>
<td mat-cell *matCellDef="let row"> {{ (row[item.data] }} </td>
</ng-container>
我有一个普通的 Material 2 DataTable,我想通过 object
自定义 table header例如:
<mat-form-field style="width:100%">
<input matInput (keyup)="applyFilter($event.target.value)" placeholder="Filter">
</mat-form-field>
<div class="mat-elevation-z8">
<table mat-table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="{{item}}" *ngFor="let item of old_title_list">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{item}} </th>
<td mat-cell *matCellDef="let row"> {{row[item]}} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;">
</tr>
</table>
<mat-paginator [pageSizeOptions]="[5, 10, 25, 100]" [pageSize]="25" showFirstLastButtons></mat-paginator>
</div>
它成功显示 table,但是 th
只是显示 data_list
object 中定义的项目名称。
所以我希望我应该将代码更改为如下所示:
<ng-container matColumnDef="{{item.data}}" *ngFor="let item of new_title_list">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{item.title}} </th>
<td mat-cell *matCellDef="let row"> {{ row[item.data] }} </td>
</ng-container>
我希望它可以通过按键获取 header 值,但它没有。我应该怎么办 ?
示例数据:
var old_title_list = ['aaaaa', '1111', '2222', '3333'];
var data_list: [{
aaaaa: 'World',
'1111': 'this is 1111',
'2222': 'this is 2222',
'3333': 'this is 3333',
},{
aaaaa: 'World',
'1111': 'this is 1111',
'2222': 'this is 2222',
'3333': 'this is 3333',
},{
aaaaa: 'World',
'1111': 'this is 1111',
'2222': 'this is 2222',
'3333': 'this is 3333',
}];
var new_title_list = [
{data: 'aaaaa', title: 'Hello'},
{data: '1111', title: '1'},
{data: '2222', title: '2'},
{data: '3333', title: '3'},
];
您的商品是 object。必须通过item.keys()获取object的键,才能使用键数组显示列名。你可以尝试这样的事情:
<ng-container matColumnDef="{{item.keys()[i]}}" *ngFor="let item of data_list; let i = index">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{item.keys()[i]}} </th>
<td mat-cell *matCellDef="let row"> {{ (row[item.data] }} </td>
</ng-container>
如果您想使用 title_list 数组中的标题,您可以使用此代码:
<ng-container matColumnDef="{{title_list[i].title}}" *ngFor="let item of data_list; let i = index">
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{title_list[i].title}} </th>
<td mat-cell *matCellDef="let row"> {{ (row[item.data] }} </td>
</ng-container>