我需要在没有模型的情况下使用angular material表格,因为我不知道服务中会返回什么。
所以我在组件中动态初始化我的MatTableDataSource和displayedColumns,就像这样:
TableComponent:
例如,
除此之外,一切都很好,只是这个
当我使用
所以我在组件中动态初始化我的MatTableDataSource和displayedColumns,就像这样:
TableComponent:
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
可以是这样的:
- ["one", "two" , "three" , "four" , "five" ]
- ["stack","overflow","help","me]
但是当我想在HTML中展示它时,由于matCellDef
的原因,无法正确显示:
TableHtml:
<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}}
来显示disCols的值为该元素的值
时,所有单元格都是空的,如下所示:
另一个仅使用{{element}}
的示例:
同时,正如您所见:
表格数据源正在动态更改。这意味着我无法轻松使用
{{element.ColumnName}}
,因为我甚至不知道它是什么。- 第一个示例的displayedColumns=['Vazife'、'AdSoyad'、'Kirmizi'、'Mavi'、'Yesil'、'Sari'];
- 第二个示例的displayedColumns=['Muhasebe'、'Ders'、'Egitim'、'Harici'];
matHeaderCellDef
是正确的,因为它直接使用了{{disCol}}。
但我需要读取disCol的值,并在单元格中显示element.(disCol的值)
。
我该怎么做?
this.displayedColumns = Object.keys(data[0]);
- cody.codeselement[disCol]
对我无效,我尝试了element[disCol.id]
、element.id
和element.disCol.id
,但都没有成功。你有什么想法吗? - Pinka