перетаскивание cdk только для указанной категории c - PullRequest
0 голосов
/ 07 февраля 2020

Итак, предположим, у меня есть две группы дел и все готово.

В группе задач есть несколько категорий, а затем внутри нее элементы задачи.

один элемент из категории 1 сделан, остальное есть для todo.

то, что предмет, перемещенный в категорию "Выполнено" в той же категории, в этой категории дел равно 1. Это означает, что категория 1 существует как для "Готово", так и для задачи. так что пользователь может передавать только предметы, которые принадлежат только к этой категории

У меня есть стек, чтобы вы поняли это.

https://stackblitz.com/edit/angular-dragdrop-from-parent-to-nested-childlist-ypfk2n?file=app / cdk-drag-drop-connected-sorting-example.ts

простыми словами я хочу перетащить (если вы находитесь на моем stackblitz go и посмотрите там) подпункт-2 в нижеследующих контейнерах с подпунктом 4,5,6

1 Ответ

0 голосов
/ 07 февраля 2020

вы не можете объединить cdkDropList. Для выбора dropList используйте [cdkData] в каждом перетаскивании и [cdkDropListEnterPredicate]. Например, вы можете использовать «item.name» в качестве cdkData, и в предикате сравнить значения

<div cdkDropListGroup>
  <ul>
    <li *ngFor="let item of parent" cdkDrag >{{item.name}}
      <ul #childList="cdkDropList" *ngIf="item.children" [cdkDropListData]="item.children"
      cdkDropList (cdkDropListDropped)="drop($event)" [cdkDropListEnterPredicate]="evenPredicate(item.name)">
        <li *ngFor="let subItem of item.children" cdkDrag [cdkDragData]="item.name">
          {{subItem.name}}
        </li>
      </ul>
    </li>
  </ul>
</div>

evenPredicate(name:string){
  return (item: CdkDrag<any>)=>{
     return name==item.data
  }
}

См. ваш разветвленный стек ПРИМЕЧАНИЕ. Вам нужно добавить «children» в test3, иначе Вы не можете ничего бросить в этом списке

...