小编mvp*_*ets的帖子

CDK 拖放无法正确更改图像的位置

我创建了一个图片库,我打算改变它们之间的位置。为此,我使用拖放 cdk 库。

我的问题是图像交换并不总是正确发生,有时我将第一张图像与第二张图像交换,但这种交换不会发生。

我怎样才能拥有这个功能齐全的水平和垂直功能?

有没有一种方法只能在图像存储在 mdc-image-list - with-text-protection 类中时才开始拖动?

谢谢 !

演示版

.HTML

  <ul class="mdc-image-list my-image-list" style="padding-left: 10px;padding-right: 10px;" cdkDropList [cdkDropListData]="data"
           (cdkDropListDropped)="drop($event)">
    <ng-container *ngFor="let product of data; let  j = index;">
      <li class="mdc-image-list__item" cdkDrag>
        <div class="mdc-image-list__image-aspect-container">
          <ng-container *ngIf="product.image == null; else productImage">
            <img src="" class="mdc-image-list__image imagenotfound">
          </ng-container>
          <ng-template #productImage>
            <img [src]="product.image" class="mdc-image-list__image">
          </ng-template>
        </div>
        <div class="mdc-image-list--with-text-protection">
        <div class="mdc-image-list__supporting mdc-image-list__supporting">
        <span class="mdc-image-list__label">{{product.name}}</span>
        </div>
        </div>
      </li>
    </ng-container>
  </ul>
Run Code Online (Sandbox Code Playgroud)

.ts

    drop(event: CdkDragDrop<string[]>) {
    if (event.previousContainer === event.container) {
      moveItemInArray(
        event.container.data,
        event.previousIndex,
        event.currentIndex …
Run Code Online (Sandbox Code Playgroud)

typescript angular-material angular angular-cdk angular-cdk-drag-drop

4
推荐指数
1
解决办法
1万
查看次数