angular - 是否可以跨多个子组件使用 cdk-drag-and-drop 指令?
问题描述
我正在开发一个项目,该项目使用 Angular 的 cdk-drag-and-drop 功能来对卡片网格进行排序。因为它是一个网格,所以我以这个 StackBlitz为例。这个例子正是我想要实现的。
但是与我的应用程序略有不同。在我的情况下,网格本身和网格上的所有项目(卡片)都是独立的 Angular 组件。这意味着我有以下两个 HTML..
网格 HTML:
<div class="example-container" cdkDropListGroup>
<div cdkDropList [cdkDropListEnterPredicate]="dropListEnterPredicate" (cdkDropListDropped)="dropListDropped($event)"></div>
<div cdkDropList *ngFor="let card of cards" [cdkDropListEnterPredicate]="dropListEnterPredicate" (cdkDropListDropped)="dropListDropped($event)">
<my-card-component [card]="card" etc..></my-custom-component>
</div>
</div>
以及网格中每张卡片的 HTML('my-card-component'):
<div class="card" cdkDrag (cdkDragMoved)="dragMoved($event)">
<!-- A lot more html -->
<div cdkDragHandle>Drag me</div>
</div>
但是,这并没有达到预期的效果。然后,当我将卡片的 HTML 移回它的父组件 HTML 文件(因此,网格)时,它确实可以工作。显然,跨多个组件使用 cdk 指令是行不通的。这是预期的行为吗?还是应该跨多个组件工作?
我已经尝试将cdkDrag
-directive 添加到my-card-component
html-element 上,因为这样会将该指令保留在网格组件中。这使得卡片可拖动,但我不能将它放在任何地方。此外,它使整个卡片可拖动,因此似乎忽略cdkDragHandle
了子组件中的 。所以这并没有让我更进一步。
最好,我会保持组件的分离并仍然使用 cdk 的指令。这可能吗?
解决方案
推荐阅读
- statistics - Julia 中的多项式回归 - glm
- r - 通过合并 csv 文件将新列添加到创建的数据框
- set - 如何在 ReasonML 中使用 Belt.Set 的示例?
- python-2.7 - Python 2.7 + SQL Alchemy 1115,“未知字符集:'utf8mb4'”
- python - 用于循环和搜索具有 txt 文件的目录文件夹中的单元格值(A2:A1700 - 在 xlsx 中)并将文件名保存在 .txt 或 .csv 文件中的 Python 脚本
- javascript - 在 signalR 核心启动时设置自定义 ID
- javascript - 禁用 javascript.js 文件的缓存网站
- java - 在 Android 中,如何按日期对数组项进行分组?
- reactjs - useLazyQuery 未在 Promise all 中触发
- reactjs - 如何在axios内部设置标题