【发布时间】:2022-12-24 22:51:27
【问题描述】:
我有一个纸牌游戏的网页,我实现了 fxLayout.xs 并且在网格中可以看到纸牌列表,但是拖放操作无法正常工作。
html手部组件
<div class="mano">
<div
fxLayout="row wrap"
fxLayoutAlign="center"
fxLayoutGap="10px"
cdkDropList
id="listaMano"
cdkDropListOrientation="horizontal"
(cdkDropListDropped)="drop($event)"
[cdkDropListData]="cartasEnMano"
cdkDropListConnectedTo="listaCampo"
>
<div
fxFlex="12"
fxLayoutGap="10px"
fxFlex.xs="30"
cdkDrag
*ngFor="let carta of cartasEnMano"
(click)="JugarCarta(carta, cartasEnMano)"
class="objetoCarta"
>
<app-carta-en-mano [carta]="carta"></app-carta-en-mano>
</div>
</div>
TS手部组件
drop(event: CdkDragDrop<Carta[]>) {
if (event.previousContainer === event.container) {
moveItemInArray(
event.container.data,
event.previousIndex,
event.currentIndex
);
} else {
transferArrayItem(
event.previousContainer.data,
event.container.data,
event.previousIndex,
event.currentIndex
);
}
}
html游戏组件
<app-oponente></app-oponente>
<div
fxLayout="row wrap"
fxLayoutAlign="center"
cdkDropList
id="listaCampo"
(cdkDropListDropped)="drop($event)"
[cdkDropListData]="cartamia"
[cdkDropListConnectedTo]="['listaCampo']"
class="lista"
>
<div fxFlex="20" fxFlex.xs="30" *ngFor="let carta of cartasEnCampo" cdkDrag>
<app-cartas-en-juego [carta]="carta"></app-cartas-en-juego>
</div>
<div class="contenedorBoton">
<button
mat-button
(click)="combate()"
class="boton"
*ngIf="cartasEnCampo.length === 2"
>
Comenzar Combate
</button>
<p-toast position="top-center"> </p-toast>
</div>
</div>
<app-mano></app-mano>
TS游戏组件
drop(event: CdkDragDrop<Carta[]>) {
if (event.previousContainer === event.container) {
moveItemInArray(
event.container.data,
event.previousIndex,
event.currentIndex
);
} else if (this.CartasService.cartaMia === undefined) {
transferArrayItem(
event.previousContainer.data,
event.container.data,
event.previousIndex,
event.currentIndex
);}}
我使用这个解决方案来指导我https://stackblitz.com/edit/angular-ivy-xtyzts,但我发现了两个问题。
1 - 当您移动卡片时,有时它会停止允许移动它们。
2 - 基于链接中的示例,我不知道如何将卡片发送到另一个 cdkDropList(游戏组件),因为 transferArrayItem 函数没有发送正确的数据
【问题讨论】:
标签: angular drag-and-drop grid draggable