如何在用户输入的Json /数组中获得相同的值?

时间:2018-02-21 14:33:10

标签: json angular pipe ngfor

我想搜索Json并获得与用户输入相同的值。 我不知道为什么我的代码无效。所以例如用户搜索汽车。如果汽车在Json。它应该在页面中显示单词car。  这是我的代码:

管:

import { Pipe, PipeTransform } from '@angular/core';


@Pipe({
  name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(items: any[], searchText: string): any[] {
if(!items) return [];
if(!searchText) return items;
searchText = searchText.toLowerCase();
return items.filter( it => {
        return it.toString().toLowerCase().includes(searchText);
});

} }

HTML:          

      <li *ngFor="let char of characters | filter : searchText" > 
          {{ searchText}}  
          {{char.name}}
          {{char.age}}
      </li>

</ul>

组件:

export class SearchComponent  {
characters: any[] = [
      {
        "name": "audi",
        "age": 1999
      },
      {
        "name": "toyota",
       "age": 2000
      }



}

2 个答案:

答案 0 :(得分:2)

你的烟斗应该是这样的

import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
 name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(items: any[], searchText: string): any[] {
if(!items) return [];
if(!searchText) return items;
searchText = searchText.toLowerCase();
return items.filter( it => {
    return it.name.toString().toLowerCase().includes(searchText);
});

答案 1 :(得分:0)

我认为it.toString()返回类似于:[object Object]

的内容

尝试JSON.stringify(it).toLowerCase()。includes(searchText);