求解 angular CDK drag 数据循环排序问题

发布于 2022-09-13 00:41:15 字数 181 浏览 26 评论 0

循环中排序无效
https://stackblitz.com/edit/a...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挽手叙旧 2022-09-20 00:41:15

你写错了.两个地方,解释写在代码里面了

<div *ngFor="let data of list">
  <h2>{{data.title}}</h2>
  <div>
    <div cdkDropList #dropList="cdkDropList" class="example-list" (cdkDropListDropped)="drop(data.children,$event)"> 
    <!--这里事件要加上,不然drop谁来调用 -->
      <div class="example-box" *ngFor="let item of data.children" cdkDrag>
        <div class="example-custom-placeholder" *cdkDragPlaceholder></div>
        {{item.title}}
      </div>
    </div>
  </div>
</div>
import { Component } from '@angular/core';
import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';

/**
 * @title Drag&Drop custom placeholder
 */
@Component({
  selector: 'cdk-drag-drop-custom-placeholder-example',
  templateUrl: 'cdk-drag-drop-custom-placeholder-example.html',
  styleUrls: ['cdk-drag-drop-custom-placeholder-example.css']
})
export class CdkDragDropCustomPlaceholderExample {
  list = [
    {
      id: 'key_01',
      title: '测试——01',
      children: [{ id: 1, title: '你好' }, { id: 2, title: '他好' }]
    },
    {
      id: 'key_02',
      title: '测试——03',
      children: [{ id: 1, title: 'HAH' }, { id: 2, title: '哈哈' }]
    }
  ];

  drop(list: Array<any>, event: CdkDragDrop<string[]>) {
  //注意这里,排序是改变数组本身,你是数据出来两个小list分别排序,所有这里需要传入当前数组
    moveItemInArray(list, event.previousIndex, event.currentIndex);
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文