You need to enable JavaScript to run this app. Angular中Component.ts里获取mat-tree根节点时node.name不生效问题
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 10:45:04