【发布时间】:2018-12-11 15:18:08
【问题描述】:
我正在通过 API 获取我的数据。我想对数据进行过滤和搜索。 我创建了一个管道,它具有以下代码:
文件:text-search.pipe.ts
transform(items: any[], searchText: string): any {
if (!items) return [];
if (!searchText) return items;
console.log("ITEMS ARE",items);
searchText = searchText.toLowerCase();
return items.filter(it => {
return it.hospital_name.toLowerCase().includes(searchText);
});
}
我的component.html文件如下:
输入栏 //用户可以按名字搜索
<input type="text" [(ngModel)]="searchText" class="form-control" placeholder="Search">
然后管道被应用到:
<div class="col-lg-3 col-md-4 col-sm-6" *ngFor="let hospital of hospital_list | hospitalSearch: searchText; let i = index;">
问题: 如果我有另一个输入字段或其他几个字段,例如用户可以搜索城市、专业等的城市字段?
例如:
<input type="text" [(ngModel)]="searchCity" class="form-control" placeholder="Search">
那么我该如何修改现有的管道呢?还是我必须创建一个新管道。
我尝试过的事情:
在pipe.ts 文件中:
transform(items: any[], searchText: string, searchCity?: string): any {
if (!items) return [];
if (!searchText) return items;
console.log("ITEMS ARE",items);
searchText = searchText.toLowerCase();
if (!searchCity) return items;
console.log("ITEMS ARE",items);
searchCity= searchCity.toLowerCase();
return items.filter(it => {
return it.hospital_name.toLowerCase().includes(searchText);
return it.hospital_city.toLowerCase().includes(searchCity);
});
它不起作用,因为第二个 return 语句无法访问。我试图阅读我没有找到任何支持的 API。请指导我如何向我获取的数据添加多个字段搜索过滤。谢谢你。 }
【问题讨论】:
-
这与回答你的问题无关,但我认为你的短路在你最终的
pipe实现中是不正确的。如果两个搜索词都是虚假的,您可能只想返回items。
标签: angular pipes-filters