2017-02-02 26 views
4

我的模板如下所示,無法讀取的特性 '過濾器' 未定義

模板:

<input #input placeholder="Search" id="search"> 
    <div class="item" *ngFor="let item of data | searchPipe: input.value"> 
     {{item}} 
    </div> 

和我有分量的SearchPipe

@Pipe({ 
    name: 'searchPipe', 
    pure: false 
}) 
export class SearchPipe implements PipeTransform { 
    transform(data: any[], searchTerm: string): any[] { 
     searchTerm = searchTerm.toUpperCase(); 
     return data.filter(item => { 
     return item.toUpperCase().indexOf(searchTerm) !== -1 
     }); 
    } 
} 

有什麼問題嗎?

+0

我也面臨同樣的問題。你有解決這個問題嗎? – stackUser44

+0

@ stackUser44是的,我解決了它 – Sajeetharan

+0

你能幫我解決你的問題 – stackUser44

回答

4

傳入數據爲空,並且過濾器的方法期待的數據,這導致錯誤。

transform(items: any[], filterQuery: any): any[] { 
     if (!filterQuery) return items; 
     return items.filter(function(item){ 
      return item.whateverProperty.toLowerCase().includes(filterQuery.toLowerCase()); 
     }) 
    } 
1

嘗試這種情況:

export class SearchPipe implements PipeTransform { 
    transform(data: any[], searchTerm: string): any[] { 
    if(!data) return []; 
    searchTerm = searchTerm.toUpperCase(); 
    return data.filter(item => { 
     return item.toUpperCase().indexOf(searchTerm) !== -1 
    }); 
    } 
} 
相關問題