2017-03-03 7 views
3

임의의 HTML 요소를 주위로 이동시키기 위해 각도 2로 사용자 지정 지시문을 구현하려고합니다. 지금까지는 HTML 요소를 클릭하고 이동을 시작하려는 경우 HTML 요소의 초기 위치를 얻는 방법을 제외하고는 모든 것이 작동하고 있습니다. 나는 그 두 개의 호스트 바인딩 내 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와 동일하므로 내 대답에 대한 링크를 추가 한 것입니다. –