Вероятно, эту проблему можно решить с помощью группировки списков, но поскольку я использую рекурсию, возникли другие проблемы...
В настоящее время все списки находятся внутри одной группы, а это означает, что в каждом списке можно перетаскивать что угодно ( cdkDropListGroup расположен в компоненте. до выполнения рекурсивной части).
Я пытаюсь сделать списки ограниченными только для приема либо элемента, либо атрибута (но не обоих), но я понятия не имею, как как это сделать...
У меня есть следующее:
Классы:
Код: Выделить всё
export class Attribute {
name: string;
type: string;
}
export class Element {
id: number;
name: string;
elements: Element[]
attributes: Attribute[];
}
Код: Выделить всё
Elements
[img]assets/img/IconPlus.png[/img]
[img]assets/img/IconPlusPurple.png[/img]
< /code>
< /p>
ts. Метод вызывается (атрибут выглядит одинаково) < /p>
isElement(drag : CdkDrag){
console.log("check " + (drag instanceof Element) + typeof drag + " , "+ typeof drag.data + ", "+ drag.data + " , " +(drag.data instanceof Element));
return (drag.data instanceof Element);
}
Из этого я попытался сравнить перетаскиваемый объект с классом .. но мне не повезло.
Есть ли способ динамически ограничить перетаскиваемый объект определенными списками? Я знаю о [cdkDropListConnectedTo], но это вызвало у меня проблемы с происходящей рекурсией и привязками. Любые рекомендации будут оценены
РЕДАКТИРОВАТЬ:
Добавлено изображение для представления того, как оно отображается, но не работает должным образом;

Подробнее здесь: https://stackoverflow.com/questions/534 ... estriction