3
次のコンポーネントテンプレートを検討して、角度素材2と単純なliタグのリスト要素を並べ替える機能を実現しようとしています。角度素材2 md-listでHTML5のドラッグアンドドロップを使用する
この機能は、Li-タグタグのために完璧に動作しますが、MD-リスト項目
ことが理由である場合には動作しませんか?
マイテンプレート:
<md-nav-list>
<md-list-item *ngFor="let i of arr" draggable="true" (dragenter)="dragenter($event)" (dragstart)="dragstart($event)">
{{i}}
</md-list-item>
</md-nav-list>
<ul>
<li *ngFor="let i of arr" draggable="true" (dragenter)="dragenter($event)" (dragstart)="dragstart($event)">{{i}}</li>
</ul>
呼ばれる関数:問題の
source: any;
/**
* CHECKS IF ONE ELEMENT LIES BEFORE THE OTHER
*/
isbefore(a, b) {
if (a.parentNode == b.parentNode) {
for (var cur = a; cur; cur = cur.previousSibling) {
if (cur === b) {
return true;
}
}
}
return false;
}
/**
* LIST ITEM DRAP ENTERED
*/
dragenter($event) {
if (this.isbefore(this.source, $event.target)) {
$event.target.parentNode.insertBefore(this.source, $event.target); // insert before
}
else {
$event.target.parentNode.insertBefore(this.source, $event.target.nextSibling); //insert after
}
}
/**
* LIST ITEM DRAG STARTED
*/
dragstart($event) {
this.source = $event.target;
$event.dataTransfer.effectAllowed = 'move';
}
スクリーンショット:
が、私は任意のMD-リストをスクリーンショットのように見えドラッグ-itemブラウザは、親からでもすべてのコンテンツのドラッグを開始します。コンポーネント。
主な問題を解決しましたが、とにかくドラッグしてリダイレクトして無効にすると、波紋効果を維持できますか? –