3
考虑以下组件模板,我试图实现对角度材质2和简单的li-tag的列表元素进行重新排序的能力。使用HTML5拖放角度材料2 md-list
此功能完全适用于锂标签标签,但未能在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浏览器开始拖拉所有的内容,甚至从父母 零件。
解决了主要问题,但是无论如何,我可以在重定向时保持连锁反应并在拖动时禁用它? –