Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript pip上的单独搜索_Javascript_Angular_Typescript - Fatal编程技术网

Javascript pip上的单独搜索

Javascript pip上的单独搜索,javascript,angular,typescript,Javascript,Angular,Typescript,我需要为搜索用户创建一个管道 但我对管道有问题 我有3个字段:名称,用户名,电子邮件 我想搜索我想用用户名或姓名或电子邮件单独搜索 但问题是,您必须为工作管道填充所有字段 @Pipe({ name: 'search' }) export class SearchPipe implements PipeTransform { transform(value: UserModel[], nameSearch?: string, emailSearch?: string,

我需要为搜索用户创建一个管道

但我对管道有问题

我有3个字段:
名称
用户名
电子邮件

我想搜索我想用
用户名
姓名
电子邮件
单独搜索

但问题是,您必须为工作管道填充所有字段

@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个模型过滤,我会修改我的答案。