2016-10-25 11 views
3

要素クラスでViewChildrenまたはContentChildrenを取得する方法はありますか?要素クラスに基づくAngular2クエリリスト

<my-container> 
    <my-item class="find-me" #item *ngFor="let item; of items"></my-item> 
</my-container> 

私は、クエリのリストを取得する必要があります。

これは、クラスベースのクエリ、次のために、すなわちclassedViewItemsclassedContentItems

@Component({ 
    selector: 'my-container', 
    template '<div><ng-content><ng-content></div>' 
}) 
export class MyContainer { 
    @ViewChildren('item') viewItems: QueryList; 
    @ContentChildren(MyItem) contentItems: QueryList; 
    @ViewChildren('.fine-me') classedViewItems: QueryList; // <-- need this to work 
    @ContentChildren('.find-me') classedContentItems: QueryList; // <-- or this 
} 

のIDまたはコンポーネントではなく、どちらか、動作しますそれを装飾せずに要素クラスによって。また角度ドキュメントに記載されているように

答えて

4

@ViewChild()@ViewChildren()@ContentChild()@ContentChildren()は、テンプレート変数の名前(または名前のカンマ区切りリスト)またはセレクタのような構成要素またはディレクティブのタイプをサポートします。

他のセレクタを使用する方法はありません。 後でQueryListをフィルタリングして、特定のクラスの要素だけを取得することはできますが、それぞれにテンプレート変数を追加することはできません。

も参照してください。How can I select an element in a component template?

+0

Thx。つまり、変数を追加し、一致するすべての要素(クラスなしのものさえも含む)を含むクエリリストを作成し、それらをフィルタリングする必要があるということですか? これは、コンポーネントの入力として選択パラメータを取得するジェネリックQueryListを持つことができないということですか? – Meir

+1

はい、すべてのフィルタと後でフィルタに変数を追加します。それらがすべて同じタイプでない場合は、コンポーネントタイプを 'QueryList'のジェネリック型パラメータとして使用することはできません。 –

関連する問題