Дерево PrimeNG: разрешить выбор элементов только в одном узле - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть элемент управления PrimeNG 7.1 для дерева, см. https://stackblitz.com/edit/angular-primeng-tree-sml

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

На этот раз мое назначение состоит в том, что мы хотим разрешить выбирать элементы только в одном узле.

Например, пользователь может выбрать Old Navy и Hill City , но , если они выбирают Marshalls, тогда Old Navy и Hill City не нужно проверять.Поэтому мы хотим, чтобы в каждый момент времени можно было выбрать только один узел верхнего уровня и его дочерние элементы.

sample screenshot

Я настроил деревос JSON dat из подписки:

<p-tree [value]="accountTreeData"
        selectionMode="checkbox"
        [(selection)]="checkedItems"
        (onNodeSelect)="nodeSelect($event)"
        (onNodeUnselect)="nodeUnselect($event)"
        (onNodeExpand)="nodeExpand($event)"></p-tree>

Это связано с этими переменными:

  accountTreeData$: Subscription;
  accountTreeData: TreeNode[];
  selectedFiles: TreeNode[];
  checkedItems: TreeNode[];
  checkedCount = 0;

и этими методами:

  nodeSelect(event) {
    this.updateAccountCount();
  }
  nodeUnselect(event) {
    this.updateAccountCount();
  }

  updateAccountCount() {
    this.checkedCount = this.checkedItems.length;
  }

  nodeExpand(event) {
    console.log(event.node.label);
  }

Любые мысли о том, как подойтиОтмена выбора предметов в других ветвях (узлах)?

...