具有 native CDK 的 Angular 7 拖放嵌套列表

标签 angular drag-and-drop angular7

我正在使用 @angular/cdk/drag-drop 提供的原生 Angular 7 拖放。

基本上,我只需要在另一个列表中创建一个可排序列表,如下面的代码所示:

<div class="external-list" cdkDropList (cdkDropListDropped)="drop1($event)">
  <div class="external-item" cdkDrag *ngFor="let item of items">
    {{item.header}}
    <div class="internal-list" cdkDropList (cdkDropListDropped)="drop2($event)">
      <div class="internal-item" cdkDrag *ngFor="let row of item.rows">
        {{row}}
      </div>
    </div>
  </div>
</div>

这是一个非常示意性的例子,只是为了说明目的。

问题是当我尝试拖动内部项目时,外部项目被拖动了。

如何在不借助第 3 方软件包的情况下解决这个问题?

最佳答案

我认为您需要在 cdkDrag 内的元素上使用拖动 handle (cdkDragHandle),至少对于父列表。

https://material.angular.io/cdk/drag-drop/overview#customizing-the-drag-area-using-a-handle

关于具有 native CDK 的 Angular 7 拖放嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53120167/

相关文章:

html - 鼠标悬停不适用于菜单图标,仅适用于菜单文本

jquery - Angular CLI 7.1.4 中未加载外部 JS 文件

angular - 我们什么时候需要在 Angular 中创建服务?

jquery - HTML拖放声音

c# - .NET - 用户控件拖放 - 子控件

php - 拖放会破坏 ID 编号方案吗?

css - Angular Material 下拉样式 : Trim Left and Right Side in CSS

angular - 同一 Angular 6 组件的多个实例

forms - 在 Angular 中使用 ControlValueAccessor 继承验证

javascript - Angular 2 Leaflet Tiles 巨大间隙