首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ng2-dragula库拖放角材料2芯片

用ng2-dragula库拖放角材料2芯片
EN

Stack Overflow用户
提问于 2017-02-17 23:27:54
回答 1查看 4.1K关注 0票数 3

使用angular2材料德拉古拉,我想用ng2-dragula库拖放筹码

指定dragula容器:

代码语言:javascript
复制
<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>

由于棱角材料在md-chip-list中创建了一个包装器md-chip-list,所以上面的内容不起作用。当我们试图拖放时,整个包装就会被拖走。

我试图用dragula的isContainer方法来解决这个问题,但是拖放根本不起作用。

代码语言:javascript
复制
constructor(private dragula: DragulaService) {
  dragula.setOptions('bag-chips', {
    isContainer(el) {
      return el.classList.contains('md-chip-list-wrapper');
    }
  }
}

我试图通过在md-chip-list中添加一个div包装器来解决这个问题,但这似乎在角度材料上出现了错误。

代码语言:javascript
复制
<md-chip-list>
  <div [dragula]="'bag-chips'">
    <md-chip>Chip</md-chip>
  </div>
</md-chip-list>

那么如何使md-chip-list与ng2-dragula一起工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-20 12:10:03

dragula解

使用dragula选项,isContainerdirection似乎可以做到这一点:

代码语言:javascript
复制
// drake-example.component.ts
constructor(private dragula: DragulaService) {
  dragula.setOptions('bag-chips', {
    isContainer(el) {
      return el.classList.contains('md-chip-list-wrapper');
    },
    direction: 'horizontal' // or 'vertical'
  }
}
代码语言:javascript
复制
<!-- drake-example.component.html -->
<md-chip-list>
  <md-chip>Chip 1</md-chip>
  <md-chip>Chip 2</md-chip>
</md-chip-list>

<md-chip-list>
  <md-chip>Chip 3</md-chip>
  <md-chip>Chip 4</md-chip>
</md-chip-list>

柱塞的学分转到@yurzui

警告

  • md-chip-list-wrapper类可能需要根据当前的角材料实现进行更改。
  • md-chipsmd-chip-list中的顺序不更新。也就是说,在重新排列md芯片后,用箭头导航它们将被混淆(见上面的柱塞)。

实际解决方案(离题)

我去了ng2-dnd图书馆。它提供了dnd-draggablednd-droppable指令来显式地声明哪些元素可以被拖动,哪些元素可以被删除。

总的来说,解决方案更复杂,但也更可定制和直观。可拖式不必是可下拉式的直接父级。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42309140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档