2016-11-19 47 views
0

我收到錯誤Cannot read property 'bind' of undefined 我創建了一個自定義過濾器來按名稱過濾掉搜索字段,但我收到此錯誤並且無法越過它。任何幫助表示讚賞。 也跟進問題。在Angular2的最新迭代,我們不再添加過濾器:[FilterArrayPipe],@Component下,而是通過在NGModule聲明app.module.ts增加嗎?無法讀取屬性「綁定」未定義的搜索過濾器

filter.pipe.ts

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

     @Pipe({name: 'filter'}) 
     export class FilterArrayPipe implements PipeTransform{ 

     transform(value, args){ 
    if(!args || !args[0]) { 
     return value; 

     } 

    else if(value) { 
    return value.filter(item => { 
    for (let key in item){ 

    if((typeof item[key] === 'string' || item[key] instanceof String)&& 
    (item[key].indexOf(args[0]) !== -1)) { 
    return true; 

    } 

    } 


    }) 
    } 

    } 

    } 

users.component.html

<div class="container"> 

    <div class="input-group"> 
     <input type="text" id="search" class="form-control" placeholder="Search Users" [(ngModel)]= "filterText"> 

     </div><!-- /input-group --> 
     <br> 
    <table class="table table-bordered"> 
    <thead> 
     <tr> 
     <th>Name</th> 
     <th>Username</th> 
     <th>Email</th> 
     <th>Phone</th> 
     </tr> 
    </thead> 
    <tbody *ngFor="let user of _users | filter: filterText" > 
     <tr> 
     <td>{{user.name}}</td> 
     <td>{{user.username}}</td> 
     <td>{{user.email}}</td> 
      <td>{{user.phone}}</td> 
     </tr> 

    </tbody> 
    </table> 
</div> 

enter image description here

+0

在這行做你的錯誤? – Puigcerber

+0

它沒有指定,但它是管道|過濾器:觸發它的filterText。查看上面添加的截圖。 – user6680

回答

0

你有一個錯字。當它應該是transform時,您正在實施tranform方法。

它可能會幫助您爲下一個導入PipeTransform並聲明您的類爲export class FilterArrayPipe implements PipeTransform {,使TypeScript編譯器失敗並警告您有關錯誤的方法。

+0

不錯,我接受了你的建議並實現了PipeTransform,但現在我得到了一個新的錯誤。錯誤:未定義我更新的代碼上面根據您的建議,截圖以及 – user6680

+0

如果數組的第一個元素存在,但如果數組要檢查無法讀取屬性「0」:無法未定義 類型錯誤的讀取屬性「0」本身存在,所以改變你的if條件爲'if(!args ||!args [0]){'。 – Puigcerber

相關問題