ドラッグアンドドロップを片側から他の側にドロップするだけで、ソートは取り消されます。私は片側(ターゲット側)と反対側(ソース側)ではなく、並べ替えることができるようにしたい。ng2-dragulaはソートと異なるテンプレートを使ってドラッグアンドドロップを実装します
また、HTMLElementを削除するときには別のテンプレートに置き換えてください。ドロップすると、さらにうまくいきます。
明確なユースケースが不足していることがドキュメントに記載されており、これがどのように実行できるのか、またどのようなものを使用するのが大好きです。
これは私のコードは、これまでのところです:短期で
import {Component} from "@angular/core";
import {DragulaService} from "ng2-dragula";
import {DragAndDropHelper} from "../../../helpers/DragAndDropHelper";
@Component({
selector: 'app-segment-dropzone',
templateUrl: './segment-dropzone.component.html',
styleUrls: ['./segment-dropzone.component.scss']
})
export class SegmentDropzoneComponent {
constructor(private dragulaService: DragulaService) {
dragulaService.setOptions('elements-bag', {
copy: true,
copySortSource: true,
accepts: function (el, target, source, sibling) {
return target.id === 'elements-dropzone';
},
});
dragulaService.drag.subscribe((value) => {
this.getElementView(DragAndDropHelper.getElementIdFromDraggedItem(value[1]));
});
}
public getElementView(elementId: string) {
console.log(elementId);
}
}
target html
<div class="row">
<div class="col-lg-12">
<ul [dragula]='"elements-bag"' id="elements-dropzone">
<li>first item</li>
<li>second item</li>
</ul>
</div>
</div>
source html
<div class="mt-list-container list-simple">
<ul [dragula]='"elements-bag"' id="elements-list">
<li class="mt-list-item" *ngFor="let element of elements" [attr.data-element-id]="element.id" >
<div class="list-icon-container done">
<i class="icon-check"></i>
</div>
<div class="list-datetime">{{ element.type }}</div>
<div class="list-item-content">
<h3 class="">{{ element.name }}</h3>
</div>
</li>
</ul>
</div>
目標:
- 右から左にドラッグアンドドロップする:完了、 は
accept
プロパティを使用して行われます。 - 左側(ターゲット側、
id="elements-dropzone"
)のソートのみを許可します。右側にはない! - 要素テンプレートをドラッグしたまま、ドロップした後に変更します。
これについての参考になるでしょうか。どうもありがとうございました。
を。あなたは解決策を見つけましたか? –
さて、私は最終的にdynamiccomponentsのリストを保持するdropzonecomponentを書くことに行きました。ドロップすると、動的コンポーネントはドロップされた要素から情報を受け取り、コンポーネント(要素)を期待どおりにレンダリングします。私はドロップされた要素を削除するよりも。最もクリーンなソリューションではなく、期待通りに機能し、さらにカスタマイズを可能にします。 – Roberto