【发布时间】:2021-10-11 04:18:46
【问题描述】:
我创建了一个可移动的.directive.ts,您可以使用它在前端移动对象。到目前为止,该指令也有效。不幸的是,当我移动按钮时,我的点击事件总是打开。有没有办法在可拖动的开始处停用单击并在可拖动的结束处重新激活它?我的 Stackblitz:https://stackblitz.com/edit/draggable-system-azomjp?file=app%2Fapp.component.html
我的代码:
// movable.directive.ts
@Input('appMovable') set movable(movable: boolean) {
this.enabled = movable;
}
@HostListener('dragStart', ['$event']) onDragStart(event: PointerEvent): void {
this.moving = true;
this.startPosition = {
x: event.clientX - this.position.x,
y: event.clientY - this.position.y
};
}
@HostListener('dragMove', ['$event']) onDragMove(event: PointerEvent): void {
this.position = {
x: event.clientX - this.startPosition.x,
y: event.clientY - this.startPosition.y,
};
}
@HostListener('dragEnd') onDragEnd(): void {
this.moving = false;
if (this.reset) {
this.position = {
x: 0,
y: 0,
};
}
}
// HTML
<button (click)="openAlert()" [appMovable]="true">
My Button
</button>
// TS
openAlert() {
alert("Hello World!");
}
【问题讨论】:
标签: javascript angular typescript draggable