2017-03-03 14 views
3

Ich versuche eine benutzerdefinierte Anweisung in Angular 2 zu implementieren, um ein beliebiges HTML-Element zu verschieben. Bis jetzt funktioniert alles außer, dass ich jetzt nicht wie ich die anfängliche Position des HTML-Elements bekomme, wenn ich darauf klicke und mich bewegen möchte. Ich Bindung an die top und left Designs von HTML-Element mit diesen beiden Host-Bindungen:Angular 2: Position des HTML-Elements abrufen

/** 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; 

Das Problem ist, dass beide von ihnen sind undefined am Anfang. Ich kann nur die Werte aktualisieren, die auch das HTML-Element aktualisieren, aber ich kann es nicht lesen? Soll das so sein? Und wenn ja, welche Alternative muss ich die aktuelle Position des HTML-Elements abrufen.

Antwort

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

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

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

+0

Aber Offset gibt mir nicht die relative Position des Elements? – tom1991te

+0

Ihre Frage sagt nichts über "relativ" aus. 'offsetLeft' ist nur ein Beispiel. Der Rest ist der gleiche wie in JavaScript, deshalb habe ich den Link zu meiner Antwort hinzugefügt. –

Verwandte Themen