迭代角度材质表



我使用Angular Materialmat-table,据我所见,它对循环属性(如*matCellDef(有一个特殊的表示法,如本演示所示。为了去除不必要的部分,我尝试迭代记录并动态构建表。我尝试使用<div let element of elements>...</div>进行迭代,但失败了。那么,使用一种特殊的语法可能吗?

以下是我尝试迭代的部分:

<ng-container matColumnDef="weight">
<th mat-header-cell *matHeaderCellDef> Weight </th>
<td mat-cell *matCellDef="let element"> {{element.weight}} </td>
</ng-container>

创建一个可重用的matTable视图组件,如下所示:

我们可以看到columnHeaders是一个数组。

<ng-container 
*ngFor="let colName of columnHeaders; let i = index" 
matColumnDef="{{ displayedColumns[i] }}"
>

标题值

<th mat-header-cell *matHeaderCellDef mat-sort-header>
<span>
{{ colName }}
</span>
</th>

使用displayedCoumns数组的实际行值。

<td mat-cell *matCellDef="let row">
<span>
{{ row[displayedColumns[i]] }}
</span>
</td>

和数据绑定

<table
[id]="tableId"
matSort
mat-table
[(dataSource)]="dataSource"    
>...

这允许注入dataSource,它是一个任何东西的数组,以及一个列标题和dsiplaycolumns的数组,如下所示:

为了重用上面显示的matTable组件,我们可以注入columnHeaders、displayedColumns和dataSource,如代码所示。

@ViewChild(ParentComponent) matTable:ParentComponent
displayedColumns = ["id", "firstName", "lastName", "updated", "actions"];
columnHeaders = ["ID", "First Name", "Last Name", "Last Updated", "Actions"];
private setTableColumns() {
if (this.people.length > 0) {
this.matTable.displayedColumns = this.displayedColumns;
this.matTable.columnHeaders = this.columnHeaders;
this.matTable.dataSource = this.myArray;
}
}

或者像html中的这样,假设应用程序材料表是一个可重用的视图,显示具有上面显示的绑定。

<app-material-table
[dataSoure]="myArray"
[columnHeaders]="columnHeaders"
[displayedColumns]="displayedColumns"     
</app-material-table>

注意:每当我看到像MatTable这样的东西时,我都会立即考虑创建一个更简化的可重用视图,将使用它的知识抽象为更简单的东西,如上所示。

相关内容

  • 没有找到相关文章

最新更新