首页 > 解决方案 > 如何使用 SelectionModel 以编程方式选择材质树节点?

问题描述

我有一棵带复选框的树(让我们在这里使用 Material 的示例)。我想开始检查水果节点。如何检查这些节点?

我看到SelectionModel有一个select()例子传递一个节点的方法。但在示例中,构成树的数据是 的数组TodoItemNode,但SelectionModel包含TodoItemFlatNode。示例中的transformer方法可以“展平”我的节点(即转换TodoItemNodeTodoItemFlatNode),但这会返回一个新实例。

如何以编程方式选择 mat-tree 复选框以匹配我的数据?

标签: angulartypescriptangular-material

解决方案


要预先选择水果节点,请在附加的 stackblitz 示例中ngAfterViewInit的类中执行以下操作。TreeChecklistExample

  • 这将循环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])
          }
        }
      }
    

堆栈闪电战

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



推荐阅读