Ng2-Dragula-阻止拖动后从列表中删除元素

时间:2018-12-04 06:25:23

标签: angular angular6 ng2-dragula

我有一个列表,可用于将元素从中拖放到另一个列表中。

在将被拖动的元素拖到另一个列表之后,是否有办法将其保留在源列表中?

精确地说,我希望元素在从一个元素拖放到另一个元素之后出现在两个列表中。

我该如何实现?

1 个答案:

答案 0 :(得分:0)

如果将复制与[dragulaModel]一起使用,则必须提供copyItem函数。

<div class='container' dragula="PERSON" id="left" [(dragulaModel)]="left">
  <div *ngFor="let person of left">{{person | json}}</div>
</div>
<div class='container' dragula="PERSON" id="right" [(dragulaModel)]="right">
 <div *ngFor="let person of right">{{person | json}}</div>
</div>



let personId = 0;

class Person {
  id: number;
  constructor(public name: string) {
    this.id = personId++;
  }
}

export class CopyModelComponent {
  left = [
    new Person('Steven'),
    new Person('Paula'),
    new Person('Persephone'),
    new Person('Jacob'),
  ];
  right = [
    new Person('Delia'),
    new Person('Jackson'),
  ];

  constructor(private dragulaService: DragulaService) {
    dragulaService.createGroup('PERSON', {
      copy: (el, source) => {
        return source.id === 'left';
      },
      copyItem: (person: Person) => {
        return new Person(person.name);
      },
      accepts: (el, target, source, sibling) => {
        // To avoid dragging from right to left container
        return target.id !== 'left';
      }
    });
  }

}

您可以找到文档和有效的示例here