2017-05-25 88 views
0

我已經創建了一個管道來根據ID來搜索表格。這是我用來填充表格的示例JSONAngular2管道無法正常工作

[ 
    { 
    "id": "59247cd5a05cfa4966af706d", 
    "lease": { 
     "client": { 
      "client_id": 1, 
      "client_name": "Test Client 1", 
      "date_added": "2017-05-12T07:13:46.197000" 
     }, 
     "lease_id": 293, 
     "user_modified": "system" 
    } 
    } 
] 

有人能指出管道中的錯誤嗎?

export class SearchPipe implements PipeTransform { 
transform(leaseData: any[], filter: any): any { 
    if (!leaseData || !filter) { 
     return leaseData; 
    } 

    return leaseData.filter(leaseData => leaseData.id.indexOf(filter.id) !== -1) 

} 

我已經在這樣的HTML中調用管道。

<tr *ngFor="let item of leaseData | search:filterLease; let i = index "> 

我想過濾基於ID的數據。但是現在,只要我輸入一個字符,整個數據就會消失。 filterlease是用於搜索的文本框的型號名稱。

<input type="text" id="sampleSearchInput" [(ngModel)]="filterLease" ><i id = "icon-search-mat" class="material-icons">search</i> 
+0

什麼是'filterLease'?這是一個原始的?它是一個對象嗎?另外,我看不到'@ Pipe' *裝飾器*,你錯過了嗎? – developer033

+0

請詳細說明您所需的功能以及您所得到的功能。 – Antimony

回答

0

這不是過濾方法的工作方式。它應該是

return leaseData.filter(element => element.id === filter.id) 

過濾器需要被調用列表中的每一個元素的功能,如果該元素必須保持在輸出應該返回true。如果元素與過濾器具有相同的ID,則要保留該元素。