当前位置: 首页 > 知识库问答 >
问题:

角度拖放图标到画布

柳梓
2023-03-14

我需要帮助进行角度拖放。就像我需要把一个图标拖到画布上。

我已经通过了许多例子,这是我所做的例子。当我拖动那个对象时,对象的副本应该被移动。我看了很多例子,请大家帮忙。

共有2个答案

单品
2023-03-14

使用ng dnd很容易实现您的目标。您可以检查示例并尝试一下。

<div [dragSource]="source">
  drag me
</div>
constructor(private dnd: DndService) { }

source = this.dnd.dragSource("DRAGME", {
  beginDrag: () => ({ name: 'Jones McFly' }),
  // other DragSourceSpec methods
});
<div [dropTarget]="target">
  drop on me
</div>
constructor(private dnd: DndService) { }

target = this.dnd.dropTarget("DRAGME", {
  drop: monitor => {
    console.log('dropped an item:', monitor.getItem()); // => { name: 'Jones McFly' }
  }
})
戎洛城
2023-03-14

我们的“字段”是带有文本、顶部和左侧的对象。因此,您可以创建一个函数

changePosition(event:CdkDragEnd<any>,field)
  {
    console.log(field)
    field.top=+field.top.replace('px','')+event.distance.y+'px'
    field.left=+field.left.replace('px','')+event.distance.x+'px'
  }

然后你调用. html

<div *ngFor="let field of fields;" cdkDrag (cdkDragEnded)="changePosition($event,field)"
          style="position:absolute;z-index:10" [style.top]="field.top" [style.left]="field.left">
                    {{field.text}}
            </div>

更新了这个问题,因为Ananthakrishna告诉我,您可以从“dop区域”中拖出drop区域中的一个元素

我们需要使用事件cdkDragDroked

<div *ngFor="let field of fields;" cdkDrag 
    (cdkDragDropped)="changePosition($event,field)"
     style="position:absolute;z-index:10" 
     [style.top]="field.top" 
     [style.left]="field.left">
        {{field.text}}
</div>

并且,在我们的功能更改位置"检查"如果是下降里面。我使用getBoundingClientRect的元素相关:

changePosition(event:CdkDragDrop<any>,field)
  {
    
    const rectZone=this.dropZone.nativeElement.getBoundingClientRect()
    const rectElement=event.item.element.nativeElement.getBoundingClientRect()

    let top=+field.top.replace('px','')+event.distance.y
    let left=+field.left.replace('px','')+event.distance.x
    const out=top<0 || left<0 || 
              (top>(rectZone.height-rectElement.height)) || 
              (left>(rectZone.width-rectElement.width))
    if (!out) //If is inside
    {
       field.top=top+'px'
       field.left=left+'px'
    }
    else{ //we can do nothing
      this.fields=this.fields.filter(x=>x!=field) //or eliminate the object
    }
  }

看到分叉闪电战了吗

 类似资料:
  • 我想将阴影视图设置为某些坐标(目标视图)的动画。 我在用D 我不想从源位置动画视图,但想从DROP位置做。 我尝试了很多方法,但都无效。我如何才能访问?这也不起作用: 我认为应该可以做到这一点,但我需要在D期间访问“阴影”视图

  • 我工作在一个应用程序实现新的拖放角材料CDK和我试图取消拖动事件的元素按下,我的意思是,我开始拖动元素,但如果我按当我拖动元素时,它应该回到我开始拖动它的位置,到目前为止,我还没有找到这样做的方法,有人知道我怎么做吗?在cdk留档里没有关于这个的任何想法。我试着做这样的事情。 样板 Ts组件 但到目前为止还没有成功。

  • 如何在拖动时更改可拖动元素的文本,我有来自cdk/拖放库的代码片段。它为在拖动时捕捉事件提供参数。我可以通过本机元素进行更改,但它会更改所有样式,而且我还需要在dragover或其他操作上设置另一个事件。如果要在拖动元素上放置随机文本,有哪些选项? 在Html 在TS

  • 我正在尝试在我的Angular 6应用程序中添加拖放功能,我正在尝试使用Angular material。这是我想要使用的概述链接。我遵循了入门说明,但我无法使用“@angular/cdk/drag-drop”,我尝试安装了bellow软件包 npm安装-保存@角/材料@角/cdk@角/动画 和 npm安装--保存@angular/cdk 从'@角/cdk/拖放'导入{DragDropMoules

  • 问题内容: 问题: 尝试在使用angular-drag-and-drop-lists的前端中模拟拖放 尝试过: 1.jquery-simulate:给出以下错误 未捕获到的TypeError:无法在’EventTarget’上执行’dispatchEvent’:参数1不是’Event’类型的。 2.drag-drop-helper.js:点击发生在要拖动的项目上 3.drag_to:什么也没发生

  • 问题内容: 如今,我们可以将文件拖放到一个特殊的容器中,并使用XHR2上载它们。带有实时进度条等。非常酷的东西。 但是有时候我们不想要那么酷。我想要的是一次将文件拖放 到标准HTML文件输入中 :。 那可能吗?有什么方法可以从文件拖放中用正确的文件名(?)“填充”文件输入吗?(出于文件系统安全性原因,完整的文件路径不可用。) 为什么? 因为我想提交一份普通表格。适用于所有浏览器和所有设备。拖放只是