我找到了一些如何使用.cdk-drag-preview
和.cdk-drag-placeholder
类的基本示例,当没有嵌套元素时,它们似乎能够完成任务。
基本上,我有一个操作列表,每个操作都以复杂的mat-card
格式表示。那部分实际上是另一个组件完成的,但为了这个示例,我将尽可能简单地呈现它。
我的示例与以下结构类似:
<style>
.my_action { border: 2px solid red; }
</style>
<div class="drop_area" cdkDropList>
<div *ngFor="let action of actions"
(cdkDragStarted)="dragStart($event, action)"
(cdkDragMoved)="dragMoved($event, action)"
(cdkDragEnded)="dragEnded($event, action)" cdkDrag>
<mat-card class="my_action">
{{ action.name }}
</mat-card>
</div>
</div>
在Angular组件中
dragStart(e, action) {
// initialize start X coord
this.startX = 0;
// initialize start Y coord
this.startY = 0;
}
dragMoved(e, action) {
// record new position
this.endX = e.pointerPosition.x;
this.endY = e.pointerPosition.y;
// logic to set startX and startY
// TRYING TO CHANGE CARD BORDER COLOR IF this.endX - this.startX > some number
}
我希望能够实现以下操作:
- 当将卡片向左拖动时,将其边框颜色更改为蓝色,向右拖动时则更改为绿色
- 相应地更改拖放占位符的边框颜色。
提前感谢 :) 补充说明 我的最重要的挑战是更改拖放占位符的边框颜色。 我正在尝试更改占位符的边框颜色和左边距,以告知用户操作已向左或向右移动,表示列表中不同的级别。