2017-03-03 4 views
3

私は任意のHTML要素を動かすために角2でカスタムディレクティブを実装しようとしています。これまでのところ、HTML要素をクリックして移動を開始したいときに、HTML要素の初期位置を取得する方法は今のところありません。私はそれらの2つのホストのバインディングと私のHTML要素のtopleftスタイルに結合しています:角2:HTML要素の位置を取得する

/** current Y position of the native element. */ 
@HostBinding('style.top.px') public positionTop: number; 

/** current X position of the native element. */ 
@HostBinding('style.left.px') protected positionLeft: number; 

問題は、それらの両方が先頭にundefinedであるということです。 HTML要素を更新する値だけを更新することはできますが、それを読み取ることはできません。そういうことだろうか?そしてもしそうなら、私はHTML要素の現在の位置を取得する必要があります。

答えて

7
<div (click)="move()">xxx</div> 
// get the host element 
constructor(elRef:ElementRef) {} 

move(ref: ElementRef) { 
    console.log(this.elRef.nativeElement.offsetLeft); 
} 

https://stackoverflow.com/a/39149560/217408

+0

を参照してくださいしかし、オフセットは私に要素の相対的な位置を与えるものではありませんか? – tom1991te

+0

あなたの質問は「相対的」について何も言わない。 'offsetLeft'は単なる例です。残りは単純なJavaScriptと同じで、これが私の答えにリンクを追加した理由です。 –

関連する問題