Вам нужно преобразовать массив «строк» в массив «объектов».
Представьте, что у вас есть массив таких элементов, как
[{task:"eat breakfast",order:0},
{task:"eat lunch",order:1},
{task:"eat dinner",order:2}
]
В вашей функции перетаскивания вам нужно повторно- рассчитать имущественный порядок. используя типичную функцию перетаскивания
drop(event: CdkDragDrop<any[]>) {
if (event.previousContainer === event.container) {
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
} else {
transferArrayItem(event.previousContainer.data,
event.container.data,
event.previousIndex,
event.currentIndex);
//if transfer, recalculate the order of previous (the list from drag)
event.previousContainer.data.forEach((x,index)=>{
x.order=index
})
}
//always, recalculate the order of the container (the list to drag)
event.container.data.forEach((x,index)=>{
x.order=index
})
}
Затем вам все равно нужно сохранить данные (я думаю, вы можете использовать ngOnDestroy), когда вы получили данные, не забывайте сортировать по порядку
ПРИМЕЧАНИЕ: В этот SO есть cdkDragList, использующий formArray (только для сортировки), если вы хотите использовать FormArray, но это не обязательно, просто с двумя массивами должно быть достаточно