#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>