Filter 如何制作我的';角度搜索列表管道';不区分大小写?
我有一个工作列表和搜索框。在搜索框中,用户输入要搜索作业的作业名称。我制作了一个角形管道,根据用户在搜索框中键入的字母搜索作业,这意味着作业列表正在更新,只有用户键入了字母的项目 它工作得很好,但是它区分大小写,我想让它区分大小写。 我已经做了基于角度管道的区分大小写的“Contains”。我试着让搜索到的关键字以小写字母为基础,但没有成功Filter 如何制作我的';角度搜索列表管道';不区分大小写?,filter,pipe,angular7,case-insensitive,Filter,Pipe,Angular7,Case Insensitive,我有一个工作列表和搜索框。在搜索框中,用户输入要搜索作业的作业名称。我制作了一个角形管道,根据用户在搜索框中键入的字母搜索作业,这意味着作业列表正在更新,只有用户键入了字母的项目 它工作得很好,但是它区分大小写,我想让它区分大小写。 我已经做了基于角度管道的区分大小写的“Contains”。我试着让搜索到的关键字以小写字母为基础,但没有成功 **TS.file** @Pipe({ name: 'filterByName' }) export class filterNam
**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。请通过单击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。我们没有义务这么做,安德鲁·艾伦。