Компоненты PrimeNG
TreeSelect

TreeSelect

PrimeNG/TreeSelect (opens in a new tab)

Tree Select - это компонент формы для выбора из иерархических данных.

С чего начать

Подключите модуль

import { TreeSelectModule } from 'primeng/treeselect';

В .ts файле

import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';
 
@Component({
  selector: 'app-prime-treeselect',
  templateUrl: './prime-treeselect.component.html',
  styleUrls: ['./prime-treeselect.component.scss'],
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class PrimeTreeselectComponent implements OnInit {
  constructor() {}
 
  nodes1: any[] = _nodes1;
  nodes2: any[] = _nodes2;
  nodes3: any[] = _nodes3;
  nodes4: any[] = _nodes4;
 
  selectedNodes1: any[] = [];
  selectedNodes2: any[] = [];
  selectedNodes3: any[] = [];
 
  selectedNode: any;
 
  ngOnInit(): void {}
}
 
const _nodes1 = [
  {
    label: 'Documents',
    data: 'Documents Folder',
    expandedIcon: 'pi pi-folder-open',
    collapsedIcon: 'pi pi-folder',
    children: [
      {
        label: 'Work',
        data: 'Work Folder',
        expandedIcon: 'pi pi-folder-open',
        collapsedIcon: 'pi pi-folder',
        children: [
          { label: 'Expenses.doc', icon: 'pi pi-file', data: 'Expenses Document' },
          { label: 'Resume.doc', icon: 'pi pi-file', data: 'Resume Document' },
        ],
      },
      {
        label: 'Home',
        data: 'Home Folder',
        expandedIcon: 'pi pi-folder-open',
        collapsedIcon: 'pi pi-folder',
        children: [{ label: 'Invoices.txt', icon: 'pi pi-file', data: 'Invoices for this month' }],
      },
    ],
  },
  {
    label: 'Pictures',
    data: 'Pictures Folder',
    expandedIcon: 'pi pi-folder-open',
    collapsedIcon: 'pi pi-folder',
    children: [
      { label: 'barcelona.jpg', icon: 'pi pi-image', data: 'Barcelona Photo' },
      { label: 'logo.jpg', icon: 'pi pi-image', data: 'PrimeFaces Logo' },
      { label: 'primeui.png', icon: 'pi pi-image', data: 'PrimeUI Logo' },
    ],
  },
  {
    label: 'Movies',
    data: 'Movies Folder',
    expandedIcon: 'pi pi-folder-open',
    collapsedIcon: 'pi pi-folder',
    children: [
      {
        label: 'Al Pacino',
        data: 'Pacino Movies',
        children: [
          { label: 'Scarface', icon: 'pi pi-video', data: 'Scarface Movie' },
          { label: 'Serpico', icon: 'pi pi-video', data: 'Serpico Movie' },
        ],
      },
      {
        label: 'Robert De Niro',
        data: 'De Niro Movies',
        children: [
          { label: 'Goodfellas', icon: 'pi pi-video', data: 'Goodfellas Movie' },
          { label: 'Untouchables', icon: 'pi pi-video', data: 'Untouchables Movie' },
        ],
      },
    ],
  },
];
 
const _nodes2 = _nodes1;
const _nodes3 = _nodes1;
const _nodes4 = _nodes1;

Встройте компонент с помощью тэга p-treeSelect.

<p-treeSelect [(ngModel)]="selectedNode" [options]="nodes1" placeholder="Select Item"></p-treeSelect>

Selection Mode

Tree Selects предлагает варианты "single", "multiple" и "checkbox" для поведения выбора, которое определяется параметром SelectionMode.

<p-treeSelect [(ngModel)]="selectedValue1" [options]="nodes" selectionMode="single"  placeholder="Select Item"></p-treeSelect>
 
<p-treeSelect [(ngModel)]="selectedValue2" selectionMode="multiple" [options]="nodes" placeholder="Select Items"></p-treeSelect>
 
<p-treeSelect [(ngModel)]="selectedValue3" selectionMode="checkbox" [options]="nodes" placeholder="Select Items"></p-treeSelect>

Chips Display

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

<p-treeSelect [(ngModel)]="selectedValue" selectionMode="multiple" display="chip" [options]="nodes" placeholder="Select Items"></p-treeSelect>

Single

<p-treeSelect [(ngModel)]="selectedNode" [options]="nodes1" placeholder="Select Item"></p-treeSelect>

Multiple

<p-treeSelect
  [(ngModel)]="selectedNodes1"
  [options]="nodes2"
  [metaKeySelection]="false"
  selectionMode="multiple"
  placeholder="Select Item"
></p-treeSelect>

Checkbox

<p-treeSelect
  [(ngModel)]="selectedNodes2"
  [options]="nodes3"
  display="chip"
  [metaKeySelection]="false"
  selectionMode="checkbox"
  placeholder="Select Item"
></p-treeSelect>

Float Label

Basic

<span class="p-float-label">
  <p-treeSelect [(ngModel)]="selectedNodes3" [options]="nodes4" [metaKeySelection]="false" selectionMode="multiple"></p-treeSelect>
  <label for="basic">Basic</label>
</span>

TreeNode API

TreeNode API utilized by the TreeSelect

NameTypeDefaultDescription
labelstringnullLabel of the node.
dataanynullData represented by the node.
iconstringnullIcon of the node to display next to content.
expandedIconstringnullIcon to use in expanded state.
collapsedIconstringnullIcon to use in collapsed state.
childrenTreeNode[]nullAn array of treenodes as children.
leafbooleannullSpecifies if the node has children. Used in lazy loading.
stylestringnullInline style of the node.
styleClassstringnullStyle class of the node.
expandedbooleannullWhether the node is in an expanded or collapsed state.
typestringnullType of the node to match ng-template type.
parentTreeNodenullParent of the node.
draggablebooleannullWhether to disable dragging for a particular node even if draggableNodes is enabled.
droppablebooleannullWhether to disable dropping for a particular node even if droppableNodes is enabled.
selectablebooleannullUsed to disable selection of a particular node.
keystringnullUnique key of the node.(<a href="https://github.com/primefaces/primeng-lts/issues/7237#issue-409791407 (opens in a new tab)" target="_blank" rel="noopener noreferrer">more</a>)

Свойства

NameTypeDefaultDescription
selectionanynullValue of the component.
optionsarraynullAn array of treenodes.
scrollHeightstring400pxHeight of the viewport, a scrollbar is defined if height of list exceeds this value.
placeholderstringnullLabel to display when there are no selections.
disabledbooleanfalseWhen present, it specifies that the component should be disabled.
tabindexstringnullIndex of the element in tabbing order.
inputIdstringnullIdentifier of the underlying input element.
ariaLabelledBystringnullEstablishes relationships between the component and label(s) where its value should be one or more element IDs.
selectionModestringnullDefines the selection mode, valid values "single", "multiple", and "checkbox".
panelClassstringnullStyle class of the overlay panel.
appendTostringbodyA valid query selector or an HTMLElement to specify where the overlay gets attached. Special keywords are "body" for document body and "self" for the element itself.
emptyMessagestringNo results foundText to display when there are no options available. Defaults to value from PrimeVue locale configuration.
displaystringcommaDefines how the selected items are displayed, valid values are "comma" and "chip".
propagateSelectionUpbooleantrueWhether checkbox selections propagate to ancestor nodes.
propagateSelectionDownbooleantrueWhether checkbox selections propagate to descendant nodes.
metaKeySelectionbooleantrueDefines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.

События

NameParametersDescription
onShow-Callback to invoke when the overlay is shown.
onHide-Callback to invoke when the overlay is hidden.
onNodeSelectnode: Node instanceCallback to invoke when a node is selected.
onNodeUnselectnode: Node instanceCallback to invoke when a node is unselected.
onNodeExpandnode: Node instanceCallback to invoke when a node is expanded.
onNodeCollapsenode: Node instanceCallback to invoke when a node is collapsed.

Шаблоны

NameParameters
value$implicit: Value of the component
header$implicit: Value of the component<br>options: TreeNode options
footer$implicit: Value of the component<br>options: TreeNode options
empty-

Стилизация

NameElement
p-treeselectContainer element.
p-treeselect-label-containerContainer of the label to display selected items.
p-treeselect-labelLabel to display selected items.
p-treeselect-triggerDropdown button.
p-treeselect-panelOverlay panel for items.
p-treeselect-items-wrapperList container of items.