Как программно выбрать узлы дерева материалов с помощью SelectionModel?


person adamdport    schedule 29.11.2018    source источник


Ответы (1)


Чтобы предварительно выбрать узел фруктов, выполните следующее в ngAfterViewInit для класса TreeChecklistExample в прилагаемом примере stackblitz.

  • Это будет проходить через dataNodes в treeControl
  • Если item == 'Fruits' выберите узел и разверните
  • Также, если item == 'Groceries' разверните узел, поскольку он является родительским для Fruits.

    ngAfterViewInit() {
        for (let i = 0; i < this.treeControl.dataNodes.length; i++) {
          if (this.treeControl.dataNodes[i].item == 'Fruits') {
            this.todoItemSelectionToggle(this.treeControl.dataNodes[i]);
            this.treeControl.expand(this.treeControl.dataNodes[i])
          }
          if (this.treeControl.dataNodes[i].item == 'Groceries') {
            this.treeControl.expand(this.treeControl.dataNodes[i])
          }
        }
      }
    

Stackblitz

https://stackblitz.com/edit/angular-j2nf2r?embed=1&file=app/tree-checklist-example.html


person Marshal    schedule 29.11.2018
comment
NestedTreeControls имеют неопределенное значение dataNodes, что сделало ответ невозможным. Этот комментарий github по связанной проблеме предполагает, что вы устанавливаете его вручную, пока это решено. - person adamdport; 05.12.2018
comment
Огромное спасибо! Я пытался использовать this.dataSource.data вместо dataNodes, и это не сработало. - person Ashley; 13.02.2019