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() 等)操作节点关系。

相关推荐
哈__5 分钟前
ReactNative项目OpenHarmony三方库集成实战:react-native-fingerprint-scanner
javascript·react native·react.js
晴栀ay8 分钟前
Generator + RxJS 重构 LLM 流式输出的“丝滑”架构
javascript·后端·llm
我是伪码农1 小时前
14届蓝桥杯
javascript·css·css3
装不满的克莱因瓶1 小时前
React Native vs Flutter:一次深入到底的性能对比分析(含原理 + 实战)
javascript·flutter·react native·react.js·app·移动端
gCode Teacher 格码致知2 小时前
Javascript及Python提高:将对象的键值对转换为数组元素的方式以及两种语言的对比-由Deepseek产生
javascript·python
Hello.Reader2 小时前
Spark Connect 快速入门远程连接 Spark 集群实战
javascript·ajax·spark
kyriewen112 小时前
为什么我的代码在测试环境跑得好好的,一到用户电脑就崩?原来凶手躲在地址栏旁边
开发语言·前端·javascript·chrome·ecmascript·html5
小北方城市网3 小时前
JavaScript 实战 —— 实现一个简易的 TodoList(适合前端入门 / 进阶)
开发语言·前端·javascript
清汤饺子3 小时前
Superpowers:给 AI 编程 Agent 装上"工程化超能力"
前端·javascript·后端
-Da-4 小时前
【操作系统学习日记】并发编程中的竞态条件与同步机制:互斥锁与信号量
java·服务器·javascript·数据库·系统架构