我需要有关Angular材质拖放的帮助
这个想法是,我可以沿着Y轴移动屏幕上的黑色块,为此我使用了Angular Material拖放,为此我有3个方法onDragMoved,onDragStart,onDragEnd。当我释放鼠标时,我将添加100 px的高度,当我想开始第二次移动块时,它应该从上次停止的点开始移动,但这并没有发生,某种抽搐发生
视频有问题-https://dropmefiles.com/0XFU6
onDragMoved(event: CdkDragMove) {
console.log('движемся')
console.log(event)
console.log('neeeew coord', this.qwwqwqw)
// if(this.qwwqwqw != null && event != null) {
// event.distance.y = this.qwwqwqw
// event.pointerPosition.y = this.qwwqwqw
// this.qwwqwqw = null;
// }
}
onDragStart(event: CdkDragMove) {
console.log('Кнопка мыши зажата');
console.log(event.distance)
}
onDragEnd(event: CdkDragMove) {
console.log('Кнопка мыши отпущена');
console.log(event)
const y = event.distance.y + 100; // получаем координату Y курсора мыши при отпускании элемента и добавляем 100
const element = event.source.element.nativeElement;
element.style.transform = `translate3d(0, ${y}px, 0)`; // устанавливаем новую позицию элемента с помощью CSS-трансформации
element.style.height = this.originalHeight + 'px'; // восстанавливаем исходную высоту блока
event.distance.y = y;
this.qwwqwqw = y;
}
<div class="example-box" cdkDragLockAxis="y" cdkDrag (cdkDragMoved)="onDragMoved($event)" (cdkDragStarted)="onDragStart($event)" (cdkDragEnded)="onDragEnd($event)">
Координаты: {{ posX }}, {{ posY }}
</div>
[一个月一个月](一个月二个月)
我尝试调试,我将新坐标传递给onDragMoved方法,但在第二个事件中,它们被更新为一些随机的坐标
1条答案
按热度按时间xzlaal3s1#
使用[cdkDragFreeDragPosition]属性
超文本标记语言:
TS: