NG-ZORRO中tree组件的getCheckedNodeList怎么使用

在 NG-ZORRO(Ant Design for Angular) 的 Tree 组件 中,getCheckedNodeList 方法用于获取当前选中的节点列表(包括半选状态节点)。以下是具体用法和示例:

  1. 基本用法
    首先,确保你已通过 ViewChild 获取了 Tree 组件的实例(通常是 NzTreeComponent 或 NzTreeSelectComponent)。

模板中定义 Tree

html 复制代码
<nz-tree
  #tree
  [nzData]="nodes"
  nzCheckable
  [(nzCheckedKeys)]="checkedKeys"
  (nzCheckBoxChange)="onCheckboxChange($event)"
></nz-tree>

组件中调用方法

typescript 复制代码
import { Component, ViewChild } from '@angular/core';
import { NzTreeComponent, NzTreeNode } from 'ng-zorro-antd/tree';

@Component({
  selector: 'app-your-component',
  templateUrl: './your-component.html'
})
export class YourComponent {
  @ViewChild('tree') tree!: NzTreeComponent; // 获取 Tree 实例
  nodes: NzTreeNode[] = [ /* 你的树节点数据 */ ];
  checkedKeys: string[] = []; // 选中的节点 key 数组

  // 获取所有选中的节点(包括半选节点)
  getCheckedNodes(): void {
    const checkedNodes: NzTreeNode[] = this.tree.getCheckedNodeList();
    console.log('Checked Nodes:', checkedNodes);
  }

  // 如果需要仅获取全选节点(忽略半选节点)
  getFullyCheckedNodes(): void {
    const fullyCheckedNodes: NzTreeNode[] = this.tree.getCheckedNodeList(true);
    console.log('Fully Checked Nodes:', fullyCheckedNodes);
  }
}
  1. 方法参数说明
    getCheckedNodeList(includeHalfChecked?: boolean): NzTreeNode[]

includeHalfChecked(可选,默认 false):

false:仅返回 全选节点(用户明确勾选的节点)。

true:返回 全选 + 半选节点(例如父节点因部分子节点被选中而半选)。

  1. 关键注意事项
    节点数据格式

确保 nzData 中的节点数据正确绑定,且每个节点有唯一的 key。例如:

typescript 复制代码
nodes = [
  new NzTreeNode({
    title: 'Parent',
    key: '1',
    children: [
      { title: 'Child 1', key: '1-1' },
      { title: 'Child 2', key: '1-2' }
    ]
  })
];

动态更新问题

如果节点是异步加载的,调用 getCheckedNodeList 前需确保数据已渲染(可在 setTimeout 或数据加载完成的回调中调用)。

与 nzCheckedKeys 的区别

nzCheckedKeys 是双向绑定的选中 key 数组,而 getCheckedNodeList 返回的是完整的节点对象(包含 title、children 等属性)。

  1. 完整示例
typescript 复制代码
// 模板
<button (click)="logCheckedNodes()">打印选中节点</button>

// 组件
logCheckedNodes(): void {
  const allChecked = this.tree.getCheckedNodeList(); // 全选 + 半选
  const fullyChecked = this.tree.getCheckedNodeList(true); // 仅全选
  console.log('All Checked Nodes:', allChecked);
  console.log('Fully Checked Nodes:', fullyChecked);
}

通过以上方法,你可以轻松获取 Tree 组件的选中状态。如果需要进一步处理节点数据,可以通过 NzTreeNode 的 API(如 getParentNode()、getChildren() 等)操作节点关系。

相关推荐
Moment10 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
爱敲代码的小鱼10 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
铅笔侠_小龙虾12 小时前
Flutter 实战: 计算器
开发语言·javascript·flutter
大模型玩家七七13 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
2501_9447114313 小时前
JS 对象遍历全解析
开发语言·前端·javascript
发现一只大呆瓜13 小时前
虚拟列表:支持“向上加载”的历史消息(Vue 3 & React 双版本)
前端·javascript·面试
阔皮大师14 小时前
INote轻量文本编辑器
java·javascript·python·c#
lbb 小魔仙14 小时前
【HarmonyOS实战】React Native 表单实战:自定义 useReactHookForm 高性能验证
javascript·react native·react.js
_codemonster14 小时前
Vue的三种使用方式对比
前端·javascript·vue.js
全栈前端老曹14 小时前
【MongoDB】Node.js 集成 —— Mongoose ORM、Schema 设计、Model 操作
前端·javascript·数据库·mongodb·node.js·nosql·全栈