Как фильтровать регистр без учета

#angular #filter #pipe

#angular #Фильтр #труба

Вопрос:

 import {Pipe, PipeTransform} from '@angular/core';

// # Filter Array of Objects
@Pipe ({ name: 'filter' })
export class FilterArrayPipe implements PipeTransform  {
  transform(value:any, filter: string, item: any) {
    // filter = filter ? filter.toLocaleLowerCase() : null;
    if (!filter) {
      return value;
    } else if (value) {
      return value.filter(item=> {
        for (let key in item) {
          if ((typeof item[key] === 'string' || item[key] instanceof String) amp;amp;
            (item[key].indexOf(filter) !== -1)) {
            return true;
          }
        }
      });
    }
  }
}
  

Комментарии:

1. В чем вопрос?

2. Как я могу сделать это без учета регистра? этот фильтр работает только с учетом регистра

Ответ №1:

Преобразуйте их в нижний регистр перед сравнением:

 (item[key].toLowerCase().indexOf(filter.toLowerCase()) !== -1)) {
  

Ответ №2:

 <div class='card-block'>
    <ul>
        <li *ngFor="let role of roles" [class.mysearch]="!(role.roleName.toLowerCase().indexOf(searchRole.toLowerCase())!== -1)" pDraggable='aroles' (onDragStart)='dragStart($event,role)'
            (onDragEnd)='dragEnd($event)' [@flyInOut]="'in'">
            <span class='col-md'>{{role.careerGroupId.technology}} - {{role.roleName}} ({{role.careerGroupId.domain}}) </span>                        
            <span class="btn-success flex-xs-right" (click)="insertSelectedRole(role)">
              <i class="fa fa-lg fa-angle-double-right"></i>
            </span>
            </li>
    </ul>
    <div class=”row”>
        <div class="Filder">Filter by:<input [(ngModel)]="searchRole" type="text" class="Searchtextbox" placeholder="Search here"
            /></div>
    </div>
</div>