Скопируйте с помощью ng2-dragula - PullRequest
1 голос
/ 05 ноября 2019

Я бы хотел, чтобы моя исходная модель оставалась неизменной после перетаскивания одного элемента. Вот что у меня есть sofar: component.ts:

constructor(private dragulaService: DragulaService) {
    this.dragulaService.dropModel('DragItems').subscribe(dropItem => {
        this.text += dropItem.item.data;
    });
}

component.html:

<ul [dragula]="'DragItems'" [dragulaModel]="datas">
    <li *ngFor="let data of datas">
        <div class="list-item-class">
            {{data.value}}
        </div>
    </li>
</ul>

В моем целевом поле у ​​меня уже есть текст и я получаю значение перетаскиваемого элементадобавляется в конец существующего текста, но перетаскиваемый элемент исчезает. Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 05 ноября 2019

Вы можете использовать опции, чтобы сообщить Драгуле, что ваш предмет должен быть скопирован , а не перемещен:

copyItem: <T>(item: T) => T

Когда у вас есть:

  • [(dragulaModel)]
  • копия верна или функция, которая возвращает истину

... ng2-dragula придется создатьклон объекта JS, который вы подобрали. В предыдущих версиях ng2-dragula была ужасно глючная, универсальная клонируемая функция. Начиная с версии v2, вы ДОЛЖНЫ предоставлять свою собственную функцию copyItem.

Если у вас есть простой объект без вложенных значений, он может быть простым: { copy: ..., copyItem: (item: MyType) => ({ ...item }) }

Полный пример использования класса Person на демонстрационной странице .

.
...