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;
}