问题标签 [angular-cdk-drag-drop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - ngClass 的行为与使用 cdk-drag-drop 的常规类不同
编辑 2:这个问题已经由了不起的 CDK 团队解决了!
编辑:由于这似乎是一种很奇怪的行为,我现在在官方 CDK 存储库中添加了一个问题。但是,请随意提出任何想法或解决方法。
我有不同类型的元素,*cdkDropList
在拖动它们时需要不同的占位符高度。由于该数组具有具有属性的对象type
,因此我将这些类型添加为 CSS 类并尝试使用[ngClass]
. 但是,这些动态生成的类的行为与我将它们设置为“常规”CSS 类时的行为不同。
当我动态设置类时,会发生这种情况:
dropList
占位符和重叠中的元素。以下是相关代码:
example.component.ts
example.component.html
example.component.scss
我目前只有两种不同的类型,但目标是使其易于扩展,以便以后添加更多。我也已经尝试过使用class="dropzone-placeholder {{ item.type }}"
as well [class]="'dropzone-placeholder ' + item.type"
,但无济于事。
[ngClass]
经过进一步测试,我还发现,即使我们不使用变量,它通常也不起作用。使用[ngClass]="['dropzone-placeholder', 'text']"
也没有用。
这是预期的行为:
占位符和 中的元素dropList
不重叠,而是适当地放置在彼此下方。这种行为目前只能通过定期设置类来实现,但是 HTML 看起来相当不愉快,因为将来代码会变得混乱冗余。
example.component.html
为什么当类没有以传统方式设置时,CDK 的行为会有所不同?以及如何避免编写上面提到的冗余解决方法?
angular - 限制拖放到 dropList 的可能插入位置的最佳方法
我希望能够以某种方式限制可以将拖动元素放入 dropList 的位置。我找不到任何使用当前 API 的方法。
例如,对于一个有 10 个元素的 dropList,一个拖动元素只能在位置 3 和 7 之间拖放。在位置 1 和 2 上拖动会显示位置 3 上的占位符元素,并且 drop 事件的位置参数设置为 3。作为 less理想但仍然令人满意的结果,当拖动位置 1 或 2 时,不会显示占位符,并且 dropList 不会触发 drop 事件,就好像移动无效一样。
我正在考虑使用 CdkDragEnter 和 CdkDragMove 的组合来为无效位置设置占位符的样式,然后使用 drop 事件来取消无效移动,但也许有更好的方法来做到这一点?
我也考虑过使用多个下拉列表,但我需要整个区域都是可放置的,并且长期目标是在前一个有效索引上显示占位符(而不是不显示占位符并且不允许放置),单个 dropList听起来更好的方法开始。
任何建议将被认真考虑。
谢谢你。
angular - Angular cdk drap drop - 动态占位符高度
我想将占位符高度设置为拖动元素的高度。
现在我使用最小可能元素高度的静态高度占位符。我找不到任何关于如何做到这一点的信息,现在不知道。
组件 html
css
有任何想法吗?
angular - CDK 拖放无法正确更改图像的位置
我创建了一个图片库,我打算改变它们之间的位置。为此,我正在使用拖放 cdk 库。
我的问题是图像的交换并不总是正确发生,有时我将第一个图像与第二个交换并且这种交换不会发生。
我如何才能在水平和垂直方向上拥有完整的功能?
有没有办法只有在图像存储在 mdc-image-list - with-text-protection 类中时才能启动拖动?
谢谢 !
.HTML
.ts
angular - 将图像拖放到特定区域
我有一个图片库,我打算将这些图片拖放到拖放区。
我尝试在两种情况下使用它(使用鼠标拖动图像并使用允许我将图像移动到放置区域的 cdk 拖放)。
有没有办法从放置在放置区的图像中获取对象(名称、id ...)?我尝试将图像拖到放置区,当我在那里释放它时,我想知道哪个图像被放置了。
有没有办法做到这一点?有人能帮我吗?
非常感谢!
.TS
使用图像 (cdkDrag) 我无法在放置区中获得任何检测到某物进入的事件。
使用普通图像,我能够执行该功能
但我没有得到如图所示的结果。
html - 使用 CDKdraganddrop 将容器的一个元素拖动到另一个元素时,是否可以保持原始容器的样式
我希望能够使用 CDK 拖放将来自不同容器的多个元素添加到一个容器中。是否可以从本质上对不同的项目进行颜色编码。现在,当我拖动一个项目时,它会从它放入的容器中继承样式,我希望它保持其在原始容器中的颜色。
HTML
CSS
angular - Angular 8- 使用 cdkDrag 和 cdk-virtual-scroll 拖动元素时自动滚动
我有一长串必须拖放的元素。如果元素在视口中,这将起作用。如果我必须进一步向下或向上拖动,页面不会滚动。我使用 CdkVirtualScrollViewport 进行滚动,使用 CdkDragDrop 进行拖放。
这是我的html代码
还有我的 .ts 文件功能
如何在使用 cdkvirtualscroll 拖动时实现自动滚动?
arrays - 为什么在尝试使用 transferArrayItem 将数组项从一个 Angular cdkDropList 移动到另一个时出现错误?
我觉得我必须错过一些简单的东西。我正在尝试使用 Angular 的 DragDropModule 构建一个相当简单的应用程序。我只想将项目从一个 cdkDropList 转移到另一个。我在网上找到了一些类似的东西并让它发挥作用。但是当我尝试调整自己的代码时,我不断收到一个错误,告诉我 currentArray.splice 不是函数。
我已经在stackblitz上完成了代码。
我的代码在上面,测试代码在下面。您会注意到测试代码按预期工作,而我的则抛出错误。我看到的唯一不同的是,我将字符串值存储在数组中,并且它们存储数字值,但我必须遗漏其他东西。任何能指出我正确方向的人将不胜感激。谢谢!
contenteditable - contenteditable 不适用于 cdkDrag
我正在尝试使用 div 元素标记并使其表现为带有 css 的文本区域。
但我在我的卡上使用父组件(类别组件)的 cdkDrag
我发现此链接contenteditable 无法与 cdkDrag 在 google-chrome 上正常工作,解释相同,但无法得到任何答案。
javascript - 将项目传输到新列表后,Angular CdkDrag 元素丢失事件侦听器
我正在使用 Angular 的 Drag Drop CDK 在两个列表之间传输项目。我需要的一项特定功能是能够监听组件 API 提供的cdkDrag
元素。started
Subject
但是,在将项目转移到新列表后,我失去了事件侦听器。
此处的示例代码:https ://stackblitz.com/edit/angular-m8lcqp
将元素移动Fall Asleep
到完成列表时,我会登录started dragging
到控制台。但是,如果您尝试将该元素移回第一个列表,则不会触发该事件。我做错了什么?
要订阅该started
事件,我ViewChildren
会QueryList
使用cdkDrag
. 在 中ngAfterViewInit()
,我遍历这些拖动元素并订阅started
事件:
跟踪此事件的正确方法是什么?cdkDrag
由于元素现在位于不同的列表中,我是否需要检测页面上的更改然后重新循环并重新订阅?谢谢!