Javascript pip上的单独搜索
我需要为搜索用户创建一个管道 但我对管道有问题 我有3个字段:Javascript pip上的单独搜索,javascript,angular,typescript,Javascript,Angular,Typescript,我需要为搜索用户创建一个管道 但我对管道有问题 我有3个字段:名称,用户名,电子邮件 我想搜索我想用用户名或姓名或电子邮件单独搜索 但问题是,您必须为工作管道填充所有字段 @Pipe({ name: 'search' }) export class SearchPipe implements PipeTransform { transform(value: UserModel[], nameSearch?: string, emailSearch?: string,
名称
,用户名
,电子邮件
我想搜索我想用用户名
或姓名
或电子邮件
单独搜索
但问题是,您必须为工作管道填充所有字段
@Pipe({
name: 'search'
})
export class SearchPipe implements PipeTransform {
transform(value: UserModel[],
nameSearch?: string,
emailSearch?: string,
userNameSearch?: string): any {
if (!value) return [];
if (!nameSearch) return value;
nameSearch = nameSearch.toLocaleLowerCase();
value = [...value.filter(x => x.name.toLocaleLowerCase().includes(nameSearch))]
if (!emailSearch) return value;
emailSearch = emailSearch.toLocaleLowerCase();
value = [...value.filter(x => x.email.toLocaleLowerCase().includes(emailSearch))]
if (!userNameSearch) return value;
userNameSearch = userNameSearch.toLocaleLowerCase();
value = [...value.filter(x => x.userName.toLocaleLowerCase().includes(userNameSearch))]
return value;
}
有什么问题?如何解决此问题??
如果您只想按三个术语“用户名”、“姓名”或“电子邮件”中的一个进行筛选,请使用管道,其中包括筛选名称和要搜索的术语(为了更好地理解,我重命名了您的管道)。此外,我使用ngModelChange设置这两个属性,因此我只对ngModel使用单向绑定&最后我对输入元素的模型做了一些清理 我用叉子叉了你的头发 编辑:为了同时使用所有模型来过滤列表,我稍微修改了一下管道
transform(
value: UserModel[],
nameSearch: string,
emailSearch: string,
userNameSearch: string
): UserModel[] {
if (!value) return [];
if (nameSearch) {
value = value.filter(x => x.name.toLocaleLowerCase().includes(nameSearch.toLocaleLowerCase()));
}
if (emailSearch) {
value = value.filter(x => x.email.toLocaleLowerCase().includes(emailSearch.toLocaleLowerCase()));
}
if (userNameSearch) {
value = value.filter(x => x.userName.toLocaleLowerCase().includes(userNameSearch.toLocaleLowerCase()));
}
return value;
}
不,这不是我的答案。也许我想单独填写字段,也许我想完整填写字段Yok,我修改了你的,所以它按3个模型过滤,我会修改我的答案。