2016-06-26 2 views
0

Я работаю над некоторым проектом, и я не могу найти правильный ответ для моей поисковой трубы. Это мой код:Поиск трубы для Angular2

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

@Pipe({ 
    name: 'SearchPipe' 
}) 

export class SearchPipe { 


transform (value, [queryString]) { 
    if (value==null) { 
     return null; 
    } 
    if (value=="") { 
     return null; 
    } 

    if(queryString !== undefined){ 
     return value.filter(item=>item.model.toLowerCase().indexOf(queryString.toLowerCase()) !== -1)   ; 
    }else{ 
     return value; 
    } 
    } 
} 

И я получаю все результаты поиска, содержащие букву А, когда я ввожу это в поисках. Мне нужно обыскать моего json словом, а не буквой. Извините за мой плохой язык, я надеюсь, вы поймете это. Это JSON.

[ 
    { 

    "brand": "Suzuki", 
    "condition": "polovno", 
    "salesman": "Automotive", 
    "model": "Vitara" 
    } 
] 

Если кто-то может изменить код, я был бы очень доволен. Спасибо заранее!

ответ

0

Не уверен, что логика фильтра у вас есть, но попробовать это, если это ковшики

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

@Pipe({ 
    name: 'SearchPipe' 
}) 

export class SearchPipe implements PipeTransform{ 


transform (value, [queryString]) { 
    if (value==null || value=="") { 
     return null; 
    } 

    if(queryString !== undefined){ 
     return value.filter(item=>item.model.toLowerCase().indexOf(queryString.toLowerCase()) !== -1)   ; 
    }else{ 
     return value; 
    } 
    } 
} 
1

Вам не нужны скобки параметра QueryString. Вы можете передать это через параметризованный канал (например, SearchPipe: queryString).

Пример: plunker.

1

Я создал плункер, основанный на ответах HERE.

Кроме того, я должен был добавить @Input, @ViewChild и ElementRef в <input> и создавать и subscribe() к наблюдаемым его.

Angular2 Фильтр поиска: PLUNKR

Смежные вопросы