【问题标题】:Is there a way to make components (not elements) draggable in angular?有没有办法使组件(而不是元素)以角度拖动?
【发布时间】:2026-01-08 11:15:01
【问题描述】:

我使用 Angular CDK 拖放模块,它适用于 div、p 等 html 元素。但是由于某种原因,当我将 cdkDrag 指令放在组件上时,它不起作用。

<!-- WORKS -->    
<div cdkDrag>content</div>    

<!-- DOESNT WORK -->
<my-component cdkDrag></my-component>

我注意到的另一件事是,角度中的每个组件的宽度和高度都设置为 auto(基本上是 0x0),除非我编辑 css 并将 display: block 放在组件样式上

【问题讨论】:

  • 如果你用 div 包裹组件呢?我认为这与组件编译为 html 的方式有关。
  • 如果你将它们设置为阻止,你可以拖动它们吗?
  • 我用 div 包裹了组件​​,它可以工作,谢谢。由于某种原因,当我使用“块”时,组件的宽度变成了 100%,所以我使用了“内联块”。

标签: angular typescript angular-cdk dragdropmodule


【解决方案1】:

组件是自定义标签。在浏览器中,这被视为“未知”标签,默认显示为inline。如果您在其中添加块元素,这也会导致尺寸为 0x0。

要克服这个问题,您应该将其设为 display: blockinline-blockflex(或任何适合您的)以使其也可拖动。如果这不会破坏其余可拖动对象的布局,您可以创建一个全局类:

.cdkDrag {
  display: inline-block;
}

【讨论】:

    最近更新 更多