web-dev-qa-db-ja.com

Angular CDKドラッグアンドドロップ:ソースアイテムを移動しないでください

アイテムをドラッグしてメインコンテンツに追加できるエディターを実装しようとしています。問題は、ソースアイテムコンテナーからドラッグすると、ソースアイテムが常に破棄されることです。

アイテムをドラッグアンドドロップできる間、ソースアイテムを強制的に元の場所に保持する方法はありますか?基本的に、私は移動動作ではなく、そのコピー動作が必要です。

基本的に達成したいことに対応する他の質問はすでに見ましたが、この動作をどのように実装するかを知りたいのに、アイテムをコピーするために技術的に行う方法に関する質問であったため、どれも実際には役に立ちませんでしたUIで、アイテムが消えたかどうかを確認するのは非常に混乱します。

5
Yassine Zeriouh

交換

drop(event: CdkDragDrop<string[]>) {
  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
    );
  }
}

with

drop(event: any) {
  if (event.previousContainer === event.container) {
    moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
  } else {
    copyArrayItem(
      event.previousContainer.data,
      event.container.data,
      event.previousIndex,
      event.currentIndex
    );
  }
}
1
arpit tayal