获取mat-tree的所有可见节点

时间:2019-05-28 13:12:25

标签: angular tree

有没有一种简单的方法可以使用Angular的Mat-Tree获取所有可见节点的数组?

exampleTree.treeControl.nodes返回所有节点的数组,并且exampleTree.treeControl.isExpanded(node)可用于查看给定节点是否扩展,因此您可以遍历树并通过算法检查-如果未扩展节点那么它的子项就不可见了。

但是,似乎应该有一种更简单的方法,也许是通过使用Angular用来在DOM中实际呈现树元素的任何数据结构?

我正在使用一个简单的扁平树,因此以下来自Angular的示例应在此处应用:https://stackblitz.com/angular/qmyvoopvrlg?file=app%2Ftree-flat-overview-example.ts

1 个答案:

答案 0 :(得分:0)

_expandedData上的MatTreeFlatDataSource属性是连接到数据源时返回的数据,并包含基于扩展状态的当前可见节点。

请参见https://github.com/angular/components/blob/d5d7db4c834e45a75ba5382cfd06d28661b07a30/src/material/tree/data-source/flat-data-source.ts#L132

虽然从当前版本开始您可以直接访问_expandedData属性,但它不是官方API文档的一部分,因此最正确的方法是使用connect连接到数据源方法,并使用返回的Observable中的值。