【发布时间】:2019-04-13 19:29:37
【问题描述】:
有没有办法动态创建拖放区?我在使用 ngFor 和 cdkDropList 时遇到了一些问题。
这是我的第一个列表和可拖动元素:
<div class="subj-container"
cdkDropListOrientation="horizontal"
cdkDropList
#subjectList="cdkDropList"
[cdkDropListData]="subjects"
[cdkDropListConnectedTo]="[lessonList]"
(cdkDropListDropped)="drop($event)"
>
<div class="subject" *ngFor="let subject of subjects" cdkDrag>
{{subject.name}}
</div>
</div>
这是我的第二个清单:
<div class="conta" cdkDropList
#lessonList="cdkDropList"
[cdkDropListData]="appointment.lessons"
[cdkDropListConnectedTo]="[subjectList]"
(cdkDropListDropped)="drop($event)">
<div class="sub" cdkDrag *ngFor="let lesson of appointment.lessons">
{{lesson.name}}
</div>
</div>
现在,具有“conta”类的 div 位于 *ngFor 内。
我想我的问题是我的第二个列表。如果我将元素从第二个列表拖动到列表一,它可以正常工作,但是如果我尝试将元素从列表一拖动到第二个列表中的任何列表实例,它无法识别该元素正在被拖动。演示在这里:
我在这里做错了吗? 打字稿部分工作正常。
谢谢
【问题讨论】:
-
如果您删除使其成为多行的样式,您的第二个列表是否有效?下拉列表只能是水平的或垂直的。您在这里似乎有一个网格,它不起作用,因为存在依赖于知道是否计算下拉列表元素在 x 或 y 维度中的相对距离的内在逻辑。
-
@Lightheaded - 是的,我确实想到了这一点,并删除了所有样式,但没有。我找到了解决方案。 cdkDropListConnectedTo 出现问题。它连接到null,所以我做了我的解决方法。在下面检查我的答案,谢谢!
-
你有这方面的工作示例吗?
标签: angular drag-and-drop angular7 angular-cdk