Angular 7 ngFor Не обновляет связанные атрибуты - PullRequest
0 голосов
/ 19 июня 2019

У меня есть 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.

Это ожидаемое поведение? Если да, есть ли способ принудительного обновления или мне нужно перебрать каждый массив и установить атрибут индекса данных вручную?

1 Ответ

1 голос
/ 19 июня 2019

Как указано здесь Почему не обновляется модель в ngFor после изменения модели? , просто переназначьте свою переменную.

 this.list = [...this.list]

Чтобы принудительно обновить DOM, см. Каквызвать повторную визуализацию компонента в Angular 2?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...