Angular中Component.ts里获取mat-tree根节点时node.name不生效问题
问题解决
核心错误点:你在ts代码的判断条件中写的if(Node.name)里的大写Node是TypeScript/JavaScript内置的DOM节点接口的全局类型名,它的.name属性默认值就是固定字符串"Node",和你从模板传入的节点参数完全无关。
1 修正NodeCollapse方法
你已经将点击节点的名称作为参数n_name传入方法,直接使用该参数即可拿到正确的节点名,修正后代码参考:
NodeCollapse(n_name:string):void{ // 直接使用传入的n_name即可获取当前点击的节点名称 const currentNodeName = n_name; // 此处编写你的业务逻辑 if(currentNodeName) { // 你的逻辑代码 } }
2 额外需求:主动获取所有根节点名称
如果需要一次性拿到整个树形结构的所有根节点,直接调用treeControl的data属性即可:
// NestedTreeControl的data属性直接存储所有根节点数组 const rootNodes = this.treeControl.data; // 遍历提取所有根节点名称 const rootNodeNames = rootNodes.map(node => node.name);
补充校验点
如果模板中{{node.name}}可以正常渲染节点名称,说明节点数据源本身没有问题,错误仅为ts代码中误用了全局Node类型导致。如果模板也渲染异常,先检查数据源初始化时是否正确给每个节点的name字段赋值,确认没有写错字段名(比如误写为Name、title等)。
内容的提问来源于stack exchange,提问作者pradeep
相关产品推荐
相关产品推荐

