2017-03-26 38 views
0

我正在使用Angular 2.在我的一個場景中,我必須爲一個DataTable添加多個過濾器。我爲我的項目創建了自定義DataTable。
過濾器,如: enter image description hereAngular 2中的一個數據表的多個過濾器

計算器上,我發現這個Plunker https://plnkr.co/edit/e0PCIsqXumbXe6mAUWBI?p=preview

對谷歌和審查搜索答案後,我有一些代碼在plunker但不是爲我工作。

我的代碼:

管:

transform(items: Array<any>, filter: {[key: string]: any }): Array<any> { 
    return items.filter(item => { 
      let notMatchingField = Object.keys(filter) 
             .find(key => item[key] !== filter[key]); 

      return !notMatchingField; // true if matches all fields 
     }); 
} 

組件HTML:

<tr *ngFor="let item of dataresult | jbgridfilter: filterItems | orderBy : [orderbyKey, 'ID'] | paginate: { itemsPerPage: numOfPages, currentPage: p }" 
         (click)="showRowDetails(item)"> 
         <td *ngFor="let key of keysArray;"><span>{{item[key]}}</span></td> 
         <tr> 

組件類:

valueForFilter(key, event) { 
     let item = {key: event}; 
     this.filterItems.push(item); 
    } 

需要注意的是:該表是動態的,意味着字段可以是任何不固定的。

回答

1

我已經更新了這裏https://plnkr.co/edit/sJD1uQpkyBojzzt8nUps?p=preview

在valueForFilter的plunker,filterItems是一個對象不是一個數組(至少在plunker例子),所以推不會爲你工作。

updateFilter(key,value){ 
    this.peopleFilter[key] = value; 
} 

此外,你需要設置piple不純

@Pipe({ 
    name: 'filter' 
    pure: false 
}) 

我希望這有助於

+0

我得到錯誤「無法讀取屬性未定義‘過濾器’」 – Jigarb1992

+0

我已經設置'純粹:錯誤',但錯誤仍然存​​在 – Jigarb1992

+0

你看過我發佈的鏈接嗎?你是否也修復了代碼來更新你的對象? – bakerhumadi

相關問題