html - 使用切换角度过滤列表
问题描述
在我的应用程序中,我正在尝试使用切换过滤列表。我希望切换根据其过滤列表ContactStateType
。现在,当我滑动切换开关时,它会过滤整个列表并显示一个空列表,或者它会显示整个列表。它根本不过滤它。我应该在我的代码中添加什么来实现我想要的?
HTML:
<div fxLayout="row" fxLayoutAlign="end">
<mat-slide-toggle [(ngModel)]="isActive" (change)="contactFilter()" class="mr-8">
{{isActive ? 'Silindi' : 'Aktif'}}</mat-slide-toggle>
</div>
<div fxLayout="column" fxLayoutAlign="end" class="mat-elevation-z4 responsive-grid">
<table mat-table [dataSource]="dataSource" matSort class="stock-table pb-4">
<ng-container matColumnDef="CompanyName">
<th mat-header-cell *matHeaderCellDef mat-sort-header>Firma Adı</th>
<td mat-cell *matCellDef="let row"> {{row.CompanyName}} </td>
</ng-container>
<ng-container matColumnDef="ContactName">
<th mat-header-cell *matHeaderCellDef mat-sort-header>Ad-Soyad</th>
<td mat-cell *matCellDef="let row"> {{row.ContactName}} </td>
</ng-container>
<ng-container matColumnDef="InternalPhone">
<th mat-header-cell *matHeaderCellDef mat-sort-header>Dahili</th>
<td mat-cell *matCellDef="let row"> {{row.InternalPhone}} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
</div>
TS:
dataSource: MatTableDataSource<IContact>;
isActive: boolean = true;
contactFilter() {
this._adminService
.getContactList()
.then((response: IContact[]) => {
if (this.isActive) {
response = response.filter((x) => x.ContactStateType == 1);
}
this.dataSource = new MatTableDataSource(response);
this.dataSource.paginator = this.paginator;
this.dataSource.sort = this.sort;
this.dataSource.filterPredicate = (data, filter) =>
this.filterPredicate(data, filter);
});
}
filterPredicate(data: IContact, filter: string) {
let searchText = '';
if (data.CompanyName) { searchText += (data.CompanyName as any).toLocaleLowerCase('tr'); }
if (data.ContactName) { searchText += (data.ContactName as any).toLocaleLowerCase('tr'); }
if (data.InternalPhone) { searchText += (data.InternalPhone as any); }
if (data.MobilePhone) { searchText += (data.MobilePhone as any); }
if (data.Fax) { searchText += (data.Fax as any); }
if (data.Address) { searchText += (data.Address as any); }
if (data.EMail) { searchText += (data.EMail as any); }
if (data.WebSite) { searchText += (data.WebSite as any); }
if (data.SectorType) { searchText += (data.SectorType as any).toLocaleLowerCase('tr'); }
if (data.Notes) { searchText += (data.Notes as any).toLocaleLowerCase('tr'); }
return searchText.indexOf(filter) >= 0;
}
解决方案
推荐阅读
- python - 尝试使用瓶子框架读取文件
- git - 如何使用不同的 SSH 密钥在 CircleCI 中克隆第二个 GitHub 存储库(作为主克隆或作为子模块)?
- django - 在 django 模型中上传多个档案
- etl - 记录 ETL 作业的方法
- npm - npm 脚本中与平台无关的用户
- odoo - 将 odoo v12 迁移到 v13 时图像损坏
- python - 从 Flask 服务器运行 python 脚本
- csv - 使用 PySpark 读取简单的 csv
- r - 将一个 xts 除以另一个并在过程中创建一个新的 xts / 附加问题
- spring-boot - 如何在 Spring Project 中使用 ElasticSearch 的 NativeSearchQueryBuilder 返回单个对象?