如何使用Angular2数据表过滤整个列(标题和数据)?
我能够过滤列数据,但标题仍然保留..:
https://stackblitz.com/edit/data-table-filter-columns
编辑:
这实际上非常容易,而且是我的疏忽。解决方案只是将我的过滤功能添加到matHeaderRowDef和matRowDef。我已经更新了我的stackblitz,所以它现在可以按预期工作了
答案 0 :(得分:1)
我仅提供一个示例作为解决方案,因为这并不难,您可以在docs中找到解决方案。只需将这种情况应用于您的情况即可。
尝试像文档中一样的方法,因此将显示的数据分为表的列,行和类属数据。
const ELEMENT_DATA: PeriodicElement[] = [
{position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'},
{position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'},
];
data: PeriodicElement[] = ELEMENT_DATA;
displayedColumns: string[] = ['name', 'weight', 'symbol', 'position'];
columnsToDisplay: string[] = this.displayedColumns.slice(); //returns a copy of displayedColumns
现在,您可以像下面这样在html文件中使用它们:
<table mat-table [dataSource]="data">
<ng-container [matColumnDef]="column" *ngFor="let column of displayedColumns">
<th mat-header-cell *matHeaderCellDef> {{column}} </th>
<td mat-cell *matCellDef="let element"> {{element[column]}} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="columnsToDisplay"></tr>
<tr mat-row *matRowDef="let row; columns: columnsToDisplay;"></tr>
</table>
作为您解决方案的示例,我将在html文件中添加一个按钮以触发删除最后一列:(与某种排序方式相同)
<button mat-raised-button (click)="removeColumn()"> Remove column </button>
现在我们只需要删除数组displayedColumns
的最后一个元素即可删除表的最后一列。
removeColumn() {
this.columnsToDisplay.pop(); //removes the last element of the array
}