2016-05-11 9 views
1

Angular2、入力テキストの変更上のテキストフィルタが、私は私のHTMLで_videos:Video[]角度2:私の<code>component.ts</code>で

におけるビデオオブジェクトのリストと店をつかむ、私は、ビデオを表示する

<tr *ngFor="#video of _videos"> 

今、ビデオをフィルタリングするために、htmlに検索入力フィールドを作成したいと考えています。私は、パイプを使用しようとしています:html

import {Pipe,PipeTransform} from 'angular2/core'; 

@Pipe({ 
    name: 'textfilter' 
}) 

export class TextFilterPipe implements PipeTransform { 
    transform(items: any[], args: any[]): any { 
    if(args[1].toString().length === 0) 
     return items; 
    return items.filter(item => item[args[0]].indexOf(args[1]) !== -1); 
    } 
} 
ts

private _videoTitleFilter: string =''; 

<tr> 
    <th><input id="videoTitleFilter" placeholder="Filter">{{_videoTitleFilter}}</th> 
    <th></th> 
    <th></th> 
    <th></th> 
    </tr> 
    <tr *ngFor="#video of _videos |textfilter:'title':_videoTitleFilter"> 

結合が動作していないようです。パイプは初めて動作します。ここでパイプを使用するのは正しいですか?または、新しいアレイ_videoList: Video[]を作成し、_videoListを変更するスロットルでkeyupイベントを聞き取り、_videosの代わりに*ngForに使用しますか?

答えて

4

あなたのパイプが純粋ではない作ることができます:

@Pipe({ 
    name: 'textfilter', 
    pure: false 
}) 
export class TextFilterPipe implements PipeTransform { 
    transform(items: any[], args: any[]): any { 
    if(args[1].toString().length === 0) 
     return items; 
    return items.filter(item => item[args[0]].indexOf(args[1]) !== -1); 
    } 
} 

この質問はあなたを助けることができる:

+0

TKSティエリー、一切のアップデートはまだ、変更されません。私はその記事を読むでしょう。私の_videosには更新はありません。 httpを取得した後は変更されません。 – Hammer

+0

あなたの入力は '_videoTitleFilter'プロパティにどのようにバインドされていますか? –

+1

私の悪い、私はngModelに変更されます。 Tks – Hammer

関連する問題