Это из-за $event
для cdkDropListDropped
и dblclick
отличается.
Для dblclick
$event
равен экземпляру MouseEvent, поэтому нет информации о том, откуда был перемещен элемент.
Мне пришло в голову одно решение - просто написать пользовательскую функцию, которая будет брать имя элемента из события dblclick и получать имена цели и источника. С помощью этой информации вы можете легко перемещать элементы между массивами напрямую.
В шаблоне вам нужно использовать для перехода от todo к done (dblclick)="dblclickMove($event.target.innerText, 'done', 'todo')"
и наоборот для другого блока (dblclick)="dblclickMove($event.target.innerText, 'todo', 'done')"
На функции контроллера, как это:
dblclickMove(itemName: string, ...targets: string[]) {
this[targets[0]] = [
...this[targets[1]].splice(this[targets[1]].indexOf(itemName), 1),
...this[targets[0]]
];
}
StackBlitz