Javascript 无法使用在angular 7中创建的自定义管道进行搜索

Javascript 无法使用在angular 7中创建的自定义管道进行搜索,javascript,arrays,angular,search,Javascript,Arrays,Angular,Search,如何使用管道(如angular 1中的过滤器)在angular 7中搜索?下面是我尝试过的代码。但只有在完全匹配的情况下才会返回。但我需要包含这个词的结果 import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'search', pure:true }) export class SearchPipe implements PipeTransform { transform(data: any,sear

如何使用管道(如angular 1中的过滤器)在angular 7中搜索?下面是我尝试过的代码。但只有在完全匹配的情况下才会返回。但我需要包含这个词的结果

import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
  name: 'search',
  pure:true
})
export class SearchPipe implements PipeTransform { 
  transform(data: any,searchTxt:string): any {
    if(!data || !searchTxt)
    {
      return data;
    }   
    return data.filter(function(x) {
      return x.name ==searchTxt}) ;    
   }`
}
我也尝试了下面的代码,但不起作用

return data.filter(x=>x.name.toString().toLowerCase().indexof(searchTxt.toLowerCase()) !== -1)
这会引发错误:x.name.indexof不是函数

如何使用javascript\angular进行包含搜索?

您应该使用,而不是
==
indexof
(我认为这是您代码中的一个输入错误)

另外,您不应该使用
管道
来过滤值。以下是Angular不建议使用
pipe
s过滤或排序值的原因

Angular不提供此类管道,因为它们性能差,并且防止了过度缩小。filter和orderBy都需要引用对象属性的参数。阅读更多关于这方面的信息

也就是说,您基本上可以在组件内部编写过滤数据的逻辑:

在这里,尝试一下:

import { Component } from "@angular/core";
import { HttpClient } from "@angular/common/http";

@Component({
  selector: "app-root",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent {
  users = [];
  filteredUsers = [];

  constructor(private http: HttpClient) {}

  ngOnInit() {
    this.http
      .get("https://jsonplaceholder.typicode.com/users")
      .subscribe((users: any[]) => {
        this.users = users;
        this.filteredUsers = [...this.users];
      });
  }

  onSearchTextChange(searchString) {
    this.filteredUsers = [
      ...this.users.filter(user => user.name.indexOf(searchString) > -1)
    ];
  }
}

这是给你的裁判的一封信


代码中有一些语法错误。此外,
indexof
应该改为
indexof