2017-11-17 13 views
0

私はこのlinkに続いてカスタムフィルタパイプを作成しようとしていますが、私はAngular, TypeError: Cannot read property 'toLowerCase' of undefinedと言っているエラーがあります。私はすでにapp.module.tsにパイプをインポートし、declarationにそれを宣言しました。誰もこのエラーで私を助けることができますか?角度、TypeError:未定義の 'toLowerCase'プロパティを読み取ることができません

<form id="filter"> 
 
    <input type="text" class="form-control" name="term" [(ngModel)]="term" placeholder="filter by name" /> 
 
</form> 
 

 
<tr *ngFor="let product of productList | paginate: { itemsPerPage: 1, currentPage: p } | filter: term"> 
 
    <td>{{product.prdName}}</td> 
 
    <td>{{product.prdCat}}</td> 
 
    <td>{{product.prdSup}}</td> 
 
</tr>

@Pipe({ 
 
    name: 'filter' 
 
}) 
 

 

 
transform(prdName: any, term: any): any { 
 
    if (term === undefined) return prdName; 
 

 
    return prdName.filter(function(Product) { 
 
     return Product.name.toLowerCase().includes(term.toLowerCase()); 
 
    })

答えて

1

は次のようにしてみてください:

transform(items: any, term: any): any { 
    if (term === undefined) return items; 

    return items.filter(function(Product) { 
     return Product.prdName.toLowerCase().includes(term.toLowerCase()); 
    }) 
} 
1

(テンプレートで使用されるものは、 'prdName' です) '名前' や 'prdName' と呼ばれる属性ですか?

transform(values, args) { 
    values.filter(
     product => product.prdName.toLowerCase().includes(args.toLowerCase()) 
    ) 
} 
+0

それはcomponent.htmlでprdNameあると私は、私はあなたのコードを改善するだろうと思いますいくつかの変更で私の答えを更新した –

+1

@WiraXieをcomponent.ts。 –

関連する問題