这通常是由于使用双向数据绑定引起的。为了避免这种情况,您可以使用 Angular 的拷贝方法来创建项目的副本。这样做可以确保在移动项目之前不会更改原始项目的顺序。
示例代码如下:
drag(event: CdkDragDrop- ) {
const previousIndex = this.items.findIndex(item => item === event.item.data);
const tmp = this.items[previousIndex];
this.items[previousIndex] = Object.assign({}, event.item.data);
const currentIndex = this.items.findIndex(item => item === event.item.data);
this.items[currentIndex] = Object.assign({}, tmp);
}
在这个示例中,我们使用了 Object.assign() 方法来创建新的项目副本,而不是使用原始项目。此外,我们在移动项目之前先保存原始项目,以确保在排序期间不会更改项目的顺序。