过滤一个包含数组的 mat-table 可以通过以下步骤实现:
以下是一个示例代码,演示如何在 mat-table 中过滤包含数组的数据:
import { Component } from '@angular/core';
@Component({
selector: 'app-table',
template: `
<input type="text" [(ngModel)]="filterValue" (input)="applyFilter()" placeholder="Filter">
<table mat-table [dataSource]="filteredData">
<!-- 表格列定义 -->
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef>Name</th>
<td mat-cell *matCellDef="let element">{{ element.name }}</td>
</ng-container>
<ng-container matColumnDef="tags">
<th mat-header-cell *matHeaderCellDef>Tags</th>
<td mat-cell *matCellDef="let element">{{ element.tags.join(', ') }}</td>
</ng-container>
<!-- 其他列定义... -->
<!-- 表格行定义 -->
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
`,
})
export class TableComponent {
data = [
{ name: 'Item 1', tags: ['tag1', 'tag2'] },
{ name: 'Item 2', tags: ['tag2', 'tag3'] },
{ name: 'Item 3', tags: ['tag1', 'tag3'] },
// 其他数据项...
];
filteredData = this.data;
displayedColumns = ['name', 'tags']; // 显示的列
filterValue = '';
applyFilter() {
const filter = this.filterValue.trim().toLowerCase();
this.filteredData = this.data.filter(item =>
item.name.toLowerCase().includes(filter) ||
item.tags.some(tag => tag.toLowerCase().includes(filter))
);
}
}
在上述示例中,我们创建了一个包含 name 和 tags 属性的数据数组。用户可以通过输入框输入过滤条件,根据名称或标签进行过滤。过滤操作会更新 filteredData 数组,然后 mat-table 会根据新的数据源自动更新表格内容。
这里推荐使用腾讯云的云原生产品,如腾讯云容器服务 TKE(产品介绍链接:https://cloud.tencent.com/product/tke),它提供了强大的容器编排和管理能力,适用于部署和管理云原生应用。同时,腾讯云还提供了丰富的云计算产品和解决方案,可根据具体需求选择适合的产品。
领取专属 10元无门槛券
手把手带您无忧上云