【发布时间】:2017-02-17 23:27:54
【问题描述】:
使用angular2 material和dragula,我想拖放chips和ng2-dragula库。
指定 Dragula 容器:
<md-chip-list [dragula]="'bag-chips'">
<md-chip>Chip 1</md-chip>
<md-chip>Chip 2</md-chip>
</md-chip-list>
<md-chip-list [dragula]="'bag-chips'">
<md-chip>Chip 3</md-chip>
<md-chip>Chip 4</md-chip>
</md-chip-list>
上述方法不起作用,因为 Angular-material 在 md-chip-list 内创建了一个包装器 div.md-chip-list-wrapper。当我们尝试拖放时,整个包装器都会被拖动。
我尝试用 Dragula 的 isContainer 方法解决问题,但拖动根本不起作用。
constructor(private dragula: DragulaService) {
dragula.setOptions('bag-chips', {
isContainer(el) {
return el.classList.contains('md-chip-list-wrapper');
}
}
}
我试图通过在md-chip-list 中添加一个 div 包装器来解决这个问题,但这似乎在角度材料中出错。
<md-chip-list>
<div [dragula]="'bag-chips'">
<md-chip>Chip</md-chip>
</div>
</md-chip-list>
那么如何使 md-chip-list 与 ng2-dragula 一起工作?
【问题讨论】:
-
个人观点的建议;我遇到了
Dragula的问题,我发现了一个很棒的易于使用的替代方案:github.com/akserg/ng2-dnd .. 希望一旦你发现自己陷入了死胡同,这会有所帮助。 -
谢谢@5313m,我正在探索
ng2-dnd作为替代方案。此外,希望拖放功能将在 Angular 材料中原生实现。 -
抱歉,这里有什么问题? plnkr.co/edit/eFKVzwG1GmrNV9sfwesX?p=preview
-
@yurzui,谢谢。看到您的示例,我从模板中删除了
[dragula]="'bag-foo'"并将direction: horizontal添加到我的德雷克选项中,并且它起作用了。它仍然感觉有点 hacky 解决方案,因为它取决于 angular-material 的实现(参考md-chip-list-wrapper类)。如果那里有任何变化,这将停止工作。无论如何,如果你回答这个问题,我会接受它。否则我会写一个。 -
重新排列
md-chip-list时还有另一个问题。通过拖放重新排列后,它在选择和使用箭头导航时保持原始顺序。订单没有更新,正如@yurzui 在 plunker 上看到的那样。不过,不确定这是否是这个问题的范围。
标签: angular angular-material2 ng2-dragula