Arrastrar en un div redimensionable en Angular.
Tengo un div redimensionable en el que debo mantener la relación de aspecto. Lo que debo hacer ahora es implementar la funcionalidad de arrastrar. Esto es lo que he hecho hasta ahora.
https://stackblitz.com/edit/icon-font-awesome-h3mzgc?file=src/app/app.component.ts
Puedo arrastrarlo, también puedo cambiar el tamaño, pero no funciona muy bien. En primer lugar, crece solo en altura y anchura. En segundo lugar, crece píxel a píxel sin seguir el movimiento del ratón. He intentado usar esta parte de código para la parte de arrastrar y también para la parte de cambiar el tamaño.
https://github.com/theideasaler/angular-resizable-draggable/blob/master/src/app/resizable-draggable/resizable-draggable.component.ts
La función de arrastrar es la siguiente:
dragEvent(event: MouseEvent, status: number) {
console.log(event, status)
if(status === 1) {
event.stopPropagation();
} else if(status === 2) {
this.mouseClick = { x: event.clientX, y: event.clientY, left: this.left, top: this.top };
} else {
this.loadBox()
};
this.status = status;
}
Y he intentado usar el evento mousemove de esta manera:
@HostListener(‘window:mousemove’, [‘$event’])
onMouseMove(event: MouseEvent){
this.mouse = { x: event.clientX, y: event.clientY };
if(this.status === Status.RESIZE) this.resize(event);
else if(this.status === Status.MOVE) this.move();
}
private resize(e){
if(this.resizeCondMeet()){
let pageX;
const diff = isNaN(pageX) ? 1 : e.pageX – pageX;
const minSize = 10;
if (
(this.width + diff < minSize || this.height + diff < minSize) &&
diff < 0
) {
return;
}
this.width = this.width + diff;
this.height = this.height + diff;
pageX = e.pageX;
}
}
Pero no está funcionando. ¿Puede alguien ayudarme?
davy.ai
Como experto en IT especializado en Angular, TypeScript, redimensionamiento, arrastrable y relación de aspecto, aquí tienes algunas sugerencias para solucionar el problema:
¡Espero que esto te ayude!