2016-07-02 14 views
13

これは比較的単純なようですが、そのドキュメントを見つけることができませんでした。私はコンポーネントの子要素にアクセスする必要があるangular2指示文を持っています。私ElementRef.nativeElementとしてコンポーネントの子要素を取得する

<ion-input> 
    <input> 
    <button></button> 
</ion-input> 

を、私は入力要素への参照を取得する必要があります。例えば、私が持っています。どうやってやるの?また、このディレクティブはサードパーティコンポーネント上で実行されているため、テンプレートを編集したり、elementRefを追加することはできません。

+1

'firstElementChild' https://plnkr.co/edit/UDoT7WzVXx582uM8ZFYK?p=preview – yurzui

答えて

25

elementRefがある場合は、通常のDOMメソッドを使用できます(Element.querySelectorなど)。あなたは、おそらくもngOnInitフックでそれをしたいと思う:

ngOnInit() { 
    let input = elementRef.nativeElement.querySelector('input') 
} 
+0

を使用してみてください申し訳ありませんが、私はちょうどそれをうまく説明していません。 htmlにはサードパーティのコンポーネントの結果があり、そこにhtmlを変更することはできません。私は、入力フィールドを操作する属性ディレクティブを作成しようとしています。私が言っていることは意味をなさないでしょうか? –

+1

私は参照してください。それから、ngOnInitで 'elementRef.nativeElement.querySelector( 'input')'と読んでみてください。チケットは – dfsq

+0

です。どうもありがとう。答えを作成したら、それをマークします。 –

8

あなたは@ViewChildデコレータを使用する必要があります。

まず、取得する子要素にidを追加します。

<ion-input> 
    <input #input> 
    <button></button> 
</ion-input> 

次にコンポーネント内で取得します。

import { Component, ViewChild, ElementRef, OnInit } from "@angular/core" 
@Component({ 
    selector: "my-component", 
    template: ` 
    <ion-input> 
     <input #input> 
     <button></button> 
    </ion-input>` 
}) 
export class MyComponent implements OnInit { 
    @ViewChild("input") inputChild: ElementRef; 

    ngOnInit() { 
    haveFunWith(inputChild); 
    } 
} 

詳しい情報ここに:https://angular.io/docs/ts/latest/api/core/index/ViewChild-decorator.html

+1

これを読んでいる人にとって、これはこれを行うための角度(最も技術的に最も正しい)方法です。 –

関連する問題