首页 文章

没有模型的角度材料表动态列

提问于
浏览
6

我需要使用没有模型的角度材料表,因为我不知道服务会是什么 .

所以我在组件中动态初始化我的 MatTableDataSourcedisplayedColumns

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",“我]

但这不是问题,因为我可以处理它 .


但是当我想用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”> {} </ mat-cell>

事实上,我想在单元格中显示 element."disCol's value" ,但我不知道该怎么做 .

否则,除了 element."disCol's value" 之外,一切都很好 .


当我使用 {{element.disCol}} 来显示 value of element that has disCols's value 时,所有单元格都是空的:

enter image description here

仅使用 {{element}} 的其他示例:

enter image description here


Also as you can see:

  • 表数据源正在动态变化 . 这意味着我不能轻易使用 {{element.ColumnName}} ,因为我甚至不知道它是什么 .

  • 第一个例子's displayedColumns = [' Vazife ', ' AdSoyad ', ' Kirmizi ', ' Mavi ', ' Yesil ', ' Sari'];

  • 第二个例子's displayedColumns = [' Muhasebe ', ' Ders ', ' Egitim ', ' Harici'];

  • matHeaderCellDef 是正确的,因为它直接使用{} .

但我需要读取disCol的值,并在单元格中显示 element.(disCol's value) .

How can I do that ?

1 回答

  • 16

    我找到了解决办法:)这是非常非常容易但我最初看不到:)只是这样:

    <mat-cell * matCellDef =“let element”> {{element [disCol]}}
    </垫细胞>

    我必须只在HTML中使用 {{element[disCol]}} .

    现在,一切都好:)

相关问题