PrimeNG p-orderList отключить множественный выбор элементов

Я использую p-orderList от PrimeNG. По умолчанию атрибут metaKeySelection имеет значение true, что подразумевает необходимость нажатия metaKey(клавиша ctrl) для выбора нескольких элементов. Я скорее искал способ полностью отключить выбор нескольких элементов. Я должен иметь возможность выбрать ТОЛЬКО ОДИН пункт в упорядоченном списке. Нет атрибута metaKey, доступного для p-orderList. Кто-нибудь может мне с этим помочь?

<p-orderList [value]="policyList" [listStyle]="{'min-height':'calc(100vh - 325px)'}" (onSelectionChange)="onSelectionChange($event)">
  <ng-template let-policy pTemplate="policy">
    <span>{{policy}}</span>
  </ng-template>
</p-orderList>

PS: onSelectionChange($event) срабатывает каждый раз, когда вы выбираете элементы из упорядоченного списка. $event.value содержит массив элементов.

1 ответ

Нет простого флага для этого, но это может быть достигнуто путем вызова функции, которая в основном заменяет весь массив выбора только исходной выбранной строкой. Вам понадобится переменная для хранения предыдущего значения для сравнения.

  onSelectionChange(event) {
    if (event.value.length === 1) {
      this.tempValue = event.value[0];
    }
    else {
      event.value = [this.tempValue];
    } 
  }

Можно также упростить, передав функцию event.value в функцию

(onSelectionChange)="onSelectionChange($event.value)">

Что насчет metaKeySelection входное свойство? (как показано здесь)

<p-orderList [metaKeySelection]="false" [value]="policyList" [listStyle]="{'min-height':'calc(100vh - 325px)'}" (onSelectionChange)="onSelectionChange($event)">
  <ng-template let-policy pTemplate="policy">
    <span>{{policy}}</span>
  </ng-template>
</p-orderList>
Другие вопросы по тегам