Javascript 无法使用在angular 7中创建的自定义管道进行搜索
如何使用管道(如angular 1中的过滤器)在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
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
。