2017-02-04 9 views
1

角度1の指示コードを角度2に変換しようとしていますが、ElementRef.find()が関数ではないというエラーが発生します。同じことを達成する他の方法がありますか?要素の中の要素を見つける。ElementRef.find()は関数ではありません。2

アンギュラ1

link: function ($scope, $elem, attrs) { 
      var elem = $elem[0] table = $elem, 
       thead = table.find('thead'), 
       tbody = table.find('tbody'), 
     } 

角度2

constructor(el: ElementRef, renderer: Renderer) { 
    this.elem = el.nativeElement; 
    this.table = el, 
    this.thead = this.table.find('thead'); 
    this.tbody = this.table.find('tbody'); 
    this.tableWidth = this.table[0].getBoundingClientRect().width; 
} 

答えて

2

コンストラクタ(プライベートEL:ElementRef、プライベートレンダラ:レンダラ){}

//ngAfterContentInit() { // for directive or projected content 
ngAfterViewInit() { // for searching a components template 
    this.elem = el.nativeElement; 
    this.table = el, 
    this.thead = this.table.querySelector('thead'); 
    this.tbody = this.table.querySelector('tbody'); 
    this.tableWidth = this.table[0].getBoundingClientRect().width; 
} 
find

jQueryあります。 Angular2にはjQueryは含まれていません。

は、内側の要素を示し、角2ディレクティブの教師の内側angular 2/typescript : get hold of an element in the template

+0

this.tableも参照してください。したがって、querrySelectorのdocent仕事。さらにthis.table.nativeElement.querySelector( 'thead') – janIreal23

+0

コードを入力してください。これらの小さなコード断片から何が起こっているのかを診断することは不可能です。また、HTMLがコンポーネントのテンプレート内にある場合、コンストラクタから 'ngAfterViewInit()'にコードを移動する必要があります。コードがディレクティブに含まれている場合、または投影されたコンテンツが私の回答を更新した場合は 'ngAfterContentInit() 。 –

+1

完璧な 'this.table.nativeElement.querySelector( 'thead');' ngAfterViewInit() '内部で動作しました。 – janIreal23

関連する問題