2017-04-10 11 views
0

パイプを使用してテーブルをフィルタリングしようとしています。 これは私のフィルタのコードです。入力ボックスを使用して角度2のテーブルをフィルタリングする

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

@Pipe({ 
    name: 'myFilter' 
}) 
export class MyFilterPipe implements PipeTransform { 

    transform(value: any, args?: any): any { 
    return value.filter(item => item.name.indexOf(args[0]) !== -1); 
    } 
} 

私はこれは私がページを表示しようとすると、私が持っているビューのHTML

<md-input-container> 
    <md-icon>search</md-icon> 
    <input mdInput placeholder="Favorite food" [(ngModel)]="filterItem"> 
    </md-input-container> 
... 
<table> 
<tr *ngFor="let item of items | myFilter: filterItem"> 
    <td> 
     <a href="#"> 
     <span > 
     {{item.name}} 
     </span> 
     </a> 
    </td> 
    <td> 
     <div>{{item.value1}}</div> 
     <div>{{item.value2}}</div> 
    </td> 
    <td> 
     <span > 
     item.description 
     </span> 
    </td> 
    </tr> 
</table> 

ための私のコードです

import { MyFilterPipe } from './common/my-filter.pipe'; 
    @NgModule({ 
    declarations: [ 
    MyFilterPipe 
    ], 

私app.module.tsにフィルタをインポートブラウザのこのエラー: "未定義のプロパティ '0'を読み取ることができません。フィルターのため、ページはロードしたくありません。私の推測では、最初にfilterItemが空であるため、ページが読み込まれないようになっています。しかし、私はそれを解決する方法を知らない。 ご協力いただければ幸いです!ありがとう!

+0

は 'args'がここに未定義の値であるように、多分あなたはargs'があることを前のように定義された'場合にのみ実行するようにフィルタを更新する可能性が見えますフィルタをまったく実行する必要はありません。 – GillesC

答えて

1

私は、filterItemが最初は空であるため、これによってページが読み込まれないようにしています。

実際にはは未定義です。

問題は、次のことをやって固定することができます。

transform(value: any, args?: any): any { 
    return !!args ? value.filter(item => item.name.indexOf(args[0]) !== -1) : value; 
} 
+0

魅力的な作品です。ありがとう! – edkeveked

関連する問題