Angular Material - 移动元素到新位置
P粉121081658
P粉121081658 2023-09-01 09:12:46
[JavaScript讨论组]

我需要有关 Angular 材质拖放的帮助

这个想法是我可以沿着 Y 轴移动屏幕上的黑色块,为此我使用 Angular Material 拖放,为此我有 3 个方法 onDragMoved、onDragStart、onDragEnd。当我释放鼠标时,我将在高度上添加100px,当我想第二次开始移动该块时,它应该从上次停止的位置开始移动,但这种情况不会发生,某种原因发生抽搐

有问题的视频 - 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>

[在此处输入图像描述](https://i.stack.imgur.com/RmWP2.png)

我尝试调试,我将新坐标传递给 onDragMoved 方法,但在第二个事件中它们被更新为一些随机坐标

P粉121081658
P粉121081658

全部回复(1)
P粉391955763

使用[cdkDragFreeDragPosition]属性

HTML:

<div class="example-box" cdkDragLockAxis="y" cdkDrag [cdkDragFreeDragPosition]="dragPosition" (cdkDragEnded)="onDragEnd($event)">
    Координаты: {{ posX }}, {{ posY }}
</div>

TS:

dragPosition = { x: 0, y: 0 };

onDragEnd(event: CdkDragMove) {
    this.dragPosition = { x: event.distance.x, y: event.distance.y + 100 }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号