У меня есть 3 разных массива, каждый с разной длиной, и каждый отображается визуально с помощью ngFor. Они выглядят примерно так:
let list = [ {key:value},{key:value},{key:value},... ]
Через мой код я переупорядочиваю и вставляю эти массивы на основе пользовательского ввода. Я отслеживаю пользовательский ввод, используя свойство data-index. По сути, если вы перетаскиваете элемент, я беру атрибут data-index, который сообщает мне, какой элемент в массиве мне нужно переместить, а когда вы его отбрасываете, я считываю атрибут data-index базовых элементов, чтобы узнать, куда его вставить. Проблема заключается в том, что после внесения изменений в массив атрибут data никогда не обновляется. Это создает проблему для меня, потому что теперь мой атрибут больше не представляет свою позицию в массиве.
Это мой шаблон кода:
<div *ngFor="let item of list;let i = index;" [attr.data-index]="i">
<div>....</div>
</div>
Это мой код для управления списком
this.list.splice(item.insertIndex, 0, item);
После этой команды сращивания я ожидаю, что изменение будет перенесено в ngFor, и все мои атрибуты индекса данных будут сброшены; это означает, что я всегда ожидаю, что они будут 1,2,3,4, и т.д., что я получаю, что-то вроде 1,4,2,17,3,1,4.
Это ожидаемое поведение? Если да, есть ли способ принудительного обновления или мне нужно перебрать каждый массив и установить атрибут индекса данных вручную?