2017-10-13 41 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