2017-10-13 81 views
0

你们中的任何一个人都知道是否可以在md-table中混合动态和静态列?我使用它来显示用户数据,但我需要另一个栏目,显示有关用户的不同操作按钮。简单地添加另一个ng-container是不行的,因为'displayedColumns'中没有列定义,但是当我添加它时,我得到了重复的错误。在角度材质2表格中混合静态和动态列

<div class="example-container mat-elevation-z8"> 
<div class="example-header" layout="column" flex="100"> 
    <md-form-field floatPlaceholder="never"> 
     <input mdInput #filter placeholder="Filter users"> 
    </md-form-field> 
    <span class="fill-space"></span> 
    <button align="right center" md-raised-button color="primary" (click)="clearFilter()">Clear</button> 
    </div> 
<md-table *ngIf="users && displayedColumns" #table [dataSource]="dataSource"> 

    <ng-container *ngFor="let set of displayedColumns" [mdColumnDef]="set"> 
    <md-header-cell *mdHeaderCellDef> {{set}} </md-header-cell> 
    <md-cell *mdCellDef="let element"> {{getValue(set, element)}} </md-cell> 
    </ng-container> 

    <ng-container mdColumnDef="akcje"> 
    <md-header-cell *mdHeaderCellDef> Akcje </md-header-cell> 
    <md-cell *mdCellDef="let element"> asdf </md-cell> 
    </ng-container> <------ this doesn't show another column, when added to displayedColums, produces error 

    <md-header-row *mdHeaderRowDef="displayedColumns"></md-header-row> 
    <md-row [ngClass]="{'active-user' : current && element.Id == current.Id}" *mdRowDef="let element; let row; columns: displayedColumns;" (click)="gotoUser(element)"></md-row> 
</md-table> 

回答

2

当然,你只需要从动态列阵列分离displayedColumns

<!-- Generic column definition --> 
<ng-container *ngFor="let column of columns" [matColumnDef]="..."> 
    ... 
</ng-container> 

<!-- Special extra column --> 
<ng-container matColumnDef="myExtraColumn"> 
    ... 
</ng-container> 

这基本上就是你所拥有的。您将迭代列的列表来标记列定义,然后添加所需的任何静态列。

然后,您可以将displayedColumns(如<md-header-row><md-row>所使用的那样)设置为与您的静态列连接在一起的列的列表。

/** Table columns */ 
columns = [ 
    ..., 
    ..., 
    ..., 
]; 

/** List of columns to display in which order */ 
displayedColumns = this.columns.concat(['myExtraColumn']); 
+0

这基本上是我在做什么 - (?采用推,也许这就是问题的)问题是,当我添加新列角抛出一个错误,说有重复的列定义 – drajvver

+0

'concat'应该修复它,因为它不会像'push'那样改变数组 –

+0

不幸的是 - 仍然不起作用:https://i.imgur.com/kWoMS6Q.png – drajvver