I am using the D3 library to move an item within a Venn-diagram. When I stop dragging I want to determine the position of the item in the diagram.
item.call(
If you need to keep the reference to the class instance and also the element instance referenced by d3 drag you can define your listener functions as:
export class MyClass {
@Input()
radius: number = 45;
constructor() {
d3.drag()
.on("start", this.dragStarted(this))
.on("drag", this.dragged(this))
.on("end", this.dragEnded(this));
}
private dragged(self) {
return function(d) {
// 'this' in this context will be the d3 element
d3.select(this)
.attr("cx", d.x = self.radius * Math.cos(alpha))
.attr("cy", d.y = d3.event.y < 0 ? -self.radius * Math.sin(alpha) : self.radius * Math.sin(alpha));
}
}
...
}
Tested with d3.js v4