Filter 如何制作我的';角度搜索列表管道';不区分大小写?

Filter 如何制作我的';角度搜索列表管道';不区分大小写?,filter,pipe,angular7,case-insensitive,Filter,Pipe,Angular7,Case Insensitive,我有一个工作列表和搜索框。在搜索框中,用户输入要搜索作业的作业名称。我制作了一个角形管道,根据用户在搜索框中键入的字母搜索作业,这意味着作业列表正在更新,只有用户键入了字母的项目 它工作得很好,但是它区分大小写,我想让它区分大小写。 我已经做了基于角度管道的区分大小写的“Contains”。我试着让搜索到的关键字以小写字母为基础,但没有成功 **TS.file** @Pipe({ name: 'filterByName' }) export class filterNam

我有一个工作列表和搜索框。在搜索框中,用户输入要搜索作业的作业名称。我制作了一个角形管道,根据用户在搜索框中键入的字母搜索作业,这意味着作业列表正在更新,只有用户键入了字母的项目 它工作得很好,但是它区分大小写,我想让它区分大小写。 我已经做了基于角度管道的区分大小写的“Contains”。我试着让搜索到的关键字以小写字母为基础,但没有成功

    **TS.file**
    @Pipe({ name: 'filterByName' })
    export class filterNames implements PipeTransform {
      transform(listOfNames: string[], nameToFilter: string, ): string[] {
        var upperLetter=nameToFilter.toUpperCase();
        var smallLetter=nameToFilter.toLowerCase();
        if (!listOfNames) return null;
        if (!nameToFilter) return listOfNames;
        return listOfNames.filter(n =>
   ((n.indexOf(smallLetter) >= 0)||(n.indexOf(upperLetter) >= 0)) 
        );
      }
    }

    **Html file:**
    <mat-form-field class="example-full-width">
      <input [(ngModel)]="filterName" matInput placeholder="Find jobs">
    <mat-form-field

    <mat-nav-list *ngIf ="showlist"  #jobs>
      <mat-list-item *ngFor="let response of JOBS| filterByName:filterName">
        {{response}} 
      </mat-list-item>
    </mat-nav-list>
**TS.file**
@管道({name:'filterByName'})
导出类filterNames实现PipeTransform{
转换(listOfNames:string[],nameToFilter:string,):string[]{
var upperLetter=nameToFilter.toUpperCase();
var smallLetter=nameToFilter.toLowerCase();
如果(!listOfNames)返回null;
如果(!nameToFilter)返回名称列表;
返回names.filter的列表(n=>
((n.indexOf(小写字母)>=0)| |(n.indexOf(大写字母)>=0))
);
}
}
**Html文件:**

这可以通过强制将
名称列表中的名称
(在过滤器内)和
名称过滤器
都大写来实现

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

@Pipe({
  name: 'filterByName'
})
export class FilterNamesPipe implements PipeTransform {

  transform(listOfNames: string[], nameToFilter: string=''): string[] {
        var upperLetter = nameToFilter.toUpperCase();
        if (!listOfNames) return null;
        // console.log('listOfNames', listOfNames, 'nameToFilter', nameToFilter, 'upperLetter', upperLetter );
        if (!nameToFilter || nameToFilter === '') return listOfNames;
        return listOfNames.filter(name => 
          name.toUpperCase().startsWith(upperLetter)
        )
  }

}

Stackblitz示例-

链接管道没有帮助。例如,将作业导入大写或小写,然后将作业导入到您的管道?否@AndrewAllen,如果我应用此方法,它将更改来自API的数据的大小写,我需要在UI中以与来自API的数据完全相同的格式显示数据。我更新了ts文件,但仍然存在一些错误,有帮助吗?没问题@ArchitGoyal。请通过单击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。我们没有义务这么做,安德鲁·艾伦。