【发布时间】:2018-09-26 19:48:25
【问题描述】:
我需要使用没有模型的角材料表,因为我不知道服务会带来什么。
所以我在这样的组件中动态初始化我的MatTableDataSource 和displayedColumns:
表格组件:
ngOnInit() {
this.vzfPuanTablo = [] //TABLE DATASOURCE
//GET SOMETHING FROM SERVICE
this.listecidenKisi = this.listeciServis.listecidenKisi;
this.listecidenVazife = this.listeciServis.listecidenVazife;
//FILL TABLE DATASOURCE
var obj = {};
for (let i in this.listecidenKisi ){
for( let v of this.listecidenVazife[i].vazifeSonuclar){
obj[v.name] = v.value;
}
this.vzfPuanTablo.push(obj);
obj={};
}
//CREATE DISPLAYED COLUMNS DYNAMICALLY
this.displayedColumns = [];
for( let v in this.vzfPuanTablo[0]){
this.displayedColumns.push(v);
}
//INITIALIZE MatTableDataSource
this.dataSource = new MatTableDataSource(this.vzfPuanTablo);
}
代码最重要的部分在这里:
for( let v in this.vzfPuanTablo[0]) { this.displayedColumns.push(v); }
我在这里动态创建displayedColumns,意思是;即使我不知道服务会带来什么,我也可以在表格中展示出来。
例如displayedColumns可以是这样的:
- [“一”、“二”、“三”、“四”、“五”]
或
- ["stack","overflow","help","me]
但这不是问题,因为我可以处理它。
但是当我想在 HTML 中显示它时,我无法正确显示,因为
matCellDef东西:
表格HTML:
<mat-table #table [dataSource]="dataSource" class="mat-elevation-z8">
<ng-container *ngFor="let disCol of displayedColumns; let colIndex = index" matColumnDef="{{disCol}}">
<mat-header-cell *matHeaderCellDef>{{disCol}}</mat-header-cell>
<mat-cell *matCellDef="let element "> {{element.disCol}}
</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
</mat-table>
我的问题在这里:
<mat-cell *matCellDef="let element "> {{element.disCol}} < / mat-cell>
其实我想在单元格中显示element."disCol's value",但是我不知道该怎么做。
否则,除了 element."disCol's value" 这个东西之外,一切都很好。
当我使用 {{element.disCol}} 显示 value of element that has disCols's value 时,所有单元格都是空的:
仅使用{{element}} 的其他示例:
如您所见:
-
表数据源是动态变化的。这意味着我不能轻易使用
{{element.ColumnName}},因为我什至不知道它是什么。- 第一个示例的显示列 = ['Vazife', 'AdSoyad', 'Kirmizi', 'Mavi', 'Yesil', 'Sari'];
- 第二个示例的显示列 = ['Muhasebe', 'Ders', 'Egitim', 'Harici'];
-
matHeaderCellDef是正确的,因为它直接使用 {{disCol}}。
但我需要读取 disCol 的值,并在单元格中显示 element.(disCol's value)。
我该怎么做?
【问题讨论】:
标签: dynamic interface angular-material datasource