Угловое перемещение 7 объектов в массиве приводит к индексу -1, не сохраняет позицию - PullRequest
0 голосов
/ 18 февраля 2019

Итак, я работаю над доской задач и делаю кнопку, чтобы переместить выбранную задачу в верх / низ этого контейнера.Он работает нормально, но не сохраняет позицию, и когда я перезагружаю ее, она находится в предыдущей позиции.Я заметил, что когда я делаю это, массив имеет индекс -1 в конце.Я искал в Интернете эту проблему, но не смог найти ничего похожего.

Вот код, который у меня есть для этой функции:

public moveToBottom(container, index) {
this.container = container;
var lastIndex = (this.container.length -1);
this.loader.show();
transferArrayItem(this.container, this.container, index, lastIndex);

// this.verifyOrder(lastIndex);
this.loader.hide();
console.log(index, lastIndex, container)

Я думаю, что это как-то связанос container.length -1, но это единственный способ, который я видел, чтобы получить последний индекс.Мне просто нужен номер индекса, а не фактический объект.

Любая помощь будет оценена!Спасибо!

1 Ответ

0 голосов
/ 19 февраля 2019

Вам просто нужно использовать функцию transferArrayItem.

Например, есть массив фильмов this.movies.Таким образом, функция нажатия кнопки будет выглядеть так:

moveToTheEnd(index) {
    moveItemInArray(this.movies, index, this.movies.length - 1);
}

И HTML:

<div cdkDropList class="example-list" (cdkDropListDropped)="drop($event)">
  <div *ngFor="let movie of movies; let index = index" style="display: flex; align-items: center">
      <div class="example-box"  cdkDrag>{{movie}}</div>
      <div (click)="moveToTheEnd(index)" style="background: red">Move to the end</div>
  </div>
</div>

Вот пример: https://stackblitz.com/edit/angular-vkwb8v

...