2016-09-13 4 views
0

私はオブジェクトのリストをフィルタリングする検索パイプを持っています。次に、そのフィルタに一致するすべてのオブジェクトに対してアクションを実行したいとします。コンポーネントにパイプをインポートしてフィルタを再実行できますが、フィルタリングされた結果自体にアクセスする方法はありますか?アクセスパイプの結果がコントローラまたはテンプレート

<input type="text" [(ngModel)]="searchText"/> 
<ul> 
    <li *ngFor="let item of items | mySearch:searchText">{{item.name}}</li> 
</ul> 
<button (click)="doActionOnMatchingItems(???)">Do Action</button> 

答えて

2

は、あなたが、私は以下のようにフィルタ結果をエイリアシングさせていただきアンギュラ1とは異なり


を好きな場所filteredItemを使用し、その後

*ngFor="let item of filteredItem = (items | mySearch:searchText)" 

を試してみて。同じバージョン4.チェックNgForOfドキュメントhere

以来角度で
*ngFor="let item of items | mySearch:searchText as filteredItem" 
+0

を支えてきたこれは一見良い解決策のように見えます。しかし、これは 'doActionOnMatchingItems(???)'の結果を取り消して複数回実行されることを忘れないでください。 – rinukkusu

+0

@リニュクスGood pointですが、 'items | mySearch:searchText'もそれぞれの目盛りで評価されます。ちょうど新しい変数の割り当てを追加しました。このような場合に 'trackBy'を追加してパフォーマンスを向上させたいと思っています:)ヘッドアップの兄弟、Cheers;ありがとうございます; –

+0

@PankajParkar、Angular2を使い始めました。しかし、私は次のエラーが発生しています:*上記のあなたのソリューションを使用して* "バインディングは割り当てを含むことはできません" *。私の 'HTML'はこれを含んでいます:(' * ngFor = "は、items = customPipe:[param1、param2、param3]; let first = first"> ')をfilterItems = itemとします。ところで、それは新しい機能ですか?私はまだAngular 2 RC 4を使用しているので私は頼んでいる。よろしく): – developer033

関連する問題