Angular Drag and Drop Pass Дополнительный аргумент для ввода предиката - PullRequest
0 голосов
/ 01 февраля 2019

В моем выпадающем списке Angular Drag and Drop я хочу передать дополнительный аргумент функции "[cdkDropListEnterPredicate]".По умолчанию он отправляет CdkDrag и CdkDropList, но у меня есть несколько выпадающих списков, поэтому мне нужна только одна функция предиката ввода для них всех.Вот мой файл .html:

<div class="players" [cdkDropListEnterPredicate]="filledPosition(drag, drop, '1')"
cdkDropList #fwdLine1="cdkDropList" [cdkDropListData]="f1" 
[cdkDropListConnectedTo]="[forwardPlayers]" 
(cdkDropListDropped)="drop($event)">

    <div *ngFor="let fwd of f1" cdkDrag [cdkDragData]="fwd">
        <div class="player">
            <span>{{fwd.number}} {{fwd.name}} {{fwd.position}}</span>
        </div>
    </div>
</div>

А вот функция в файле .ts:

filledPosition = (item: CdkDrag<Skater>, list: CdkDropList, line) => {

if (line == "1") checkLine = this.f1;

console.log(item, list, line)

if (checkLine.length >= 3) {
    return false;
}

return true;

}

1 Ответ

0 голосов
/ 01 февраля 2019

Каждому списку может быть присвоен уникальный идентификатор со свойством ввода. https://material.angular.io/cdk/drag-drop/api. Возможно, назначьте уникальный идентификатор каждому списку, а затем проверьте этот идентификатор в своем предикате с помощью оператора switch.Я предполагаю, что каждый идентификатор списков будет тогда доступен с помощью list.id или какой-либо функции-получателя, такой как list.id (), внутри функции предиката.

Хотя я не уверен, что именно вы создаетеи было бы более естественно иметь разные функции для разных списков.Что вы перетаскиваете?Когда он должен быть добавлен в список, а когда нет?

...