<input type="text" [(ngModel)]="searchTerm" (input)="search()">
我们在第一次搜索时键入要搜索的内容,但是如果我们搜索然后又找不到记录,因为原始数组records
被更改,它将仅包含所搜索的记录,而不是所有记录该如何处理。
我可以创建第二个数组来保留所有记录的副本,并将其分配给else if条件中的原始数组,但这仅在我们清空搜索框的情况下才起作用,而如果我们在不清空的情况下再次进行搜索和键入则不会起作用搜索框到最后一个字符。
记录在表中显示为ngfor。搜索功能适用于该表
searchTerm : any;
records: any; //array of objects
search(){
if(this.searchTerm !== ""){
this.records = this.records.filter((res: any)=>{
return (res.name && res.name.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase()));
});
} else if(this.searchTerm === "") {
}
}
答案 0 :(得分:1)
您的对象位于this.records
中,当您进行搜索时,将结果再次分配给相同的变量this.records
。下次搜索时,不会得到它,因为数组中不存在这些项目。为搜索结果创建另一个数组。
this.filteredRecords = this.records.filter((res: any)=>{
return (res.name && res.name.toLocaleLowerCase().match(this.searchTerm.toLocaleLowerCase()));
});
并取决于您如何处理不同的用例。搜索时,显示fiteredRecords
包含从过滤函数返回的结果,并且在正常情况下searchTerm
为空:
else if(this.searchTerm === "") {
this.filteredRecords = this.records
}
答案 1 :(得分:0)