Angular 下拉式搜索灵敏度(ng选择,角度)
我正在使用一个城市列表,如下所示:Angular 下拉式搜索灵敏度(ng选择,角度),angular,select,angular-ngselect,Angular,Select,Angular Ngselect,我正在使用一个城市列表,如下所示: cities = [ {id: 1, name: 'MA, Boston'}, {id: 2, name: 'FL, Miami'}, {id: 3, name: 'NY, New York', disabled: true}, {id: 4, name: 'CA, Los Angeles'}, {id: 5, name: 'TX, Dallas'} ]; 在选择字段中,
cities = [
{id: 1, name: 'MA, Boston'},
{id: 2, name: 'FL, Miami'},
{id: 3, name: 'NY, New York', disabled: true},
{id: 4, name: 'CA, Los Angeles'},
{id: 5, name: 'TX, Dallas'}
];
在选择字段中,如果我键入“MA,B”,则该字段将过滤为“MA,Boston”,这是正确的
但是,如果我键入“MA Boston”,该字段将不显示任何结果(许多用户可能会漏掉逗号)
有没有办法让搜索函数忽略逗号,或者对逗号不太敏感
下面是一个stackblitz,上面有一个例子:
您可以使用以下功能:
searchMe(searchTerm: string, eachObject) {
let replacedKey = searchTerm.replace(/[,\.-\s]/g, '')
let newRegEx = new RegExp(replacedKey, 'gi');
let purgedName = eachObject.name.replace(/[,\.-\s]/g, '')
if (newRegEx.test(purgedName)) {
return true
}
return false
}
<ng-select [items]="cities"
bindLabel="name"
[searchFn]="searchMe"
placeholder="Select city"
[(ngModel)]="selectedCity">
</ng-select>
searchMe(searchTerm:string,eachObject){
让replacedKey=searchTerm.replace(/[,\.-\s]/g',)
设newRegEx=newregexp(replacedKey,'gi');
让purgedName=eachObject.name.replace(/[,\.-\s]/g,,)
if(新规则测试(purgedName)){
返回真值
}
返回错误
}
请参见此处:一个快速解决方法是用空字符串替换所有逗号 首先,在component.html上,您需要用自己的方法传递
searchFn
的输入属性绑定
您需要编写自己的自定义搜索函数并将其传递给ng Selector您是否只想忽略逗号?还有其他条件吗?谢谢!理想情况下,忽略逗号、句点和s,dash谢谢,尽管我尝试了“MA Boston”,但结果没有results@user749798是的,我没有在正则表达式中添加忽略案例标志,你现在可以检查了。很高兴能提供帮助!实际上,您也可以按照相同的逻辑“忽略”逗号和其他符号!
<ng-select
[items]="cities"
[searchFn]="customSearchFn"
bindLabel="name"
placeholder="Select city"
[(ngModel)]="selectedCity">
</ng-select>
customSearchFn(term: string, item) {
item.name = item.name.replace(',','');
term = term.toLocaleLowerCase();
return item.name.toLocaleLowerCase().indexOf(term) > -1;
}