mcpField
S
syncfusion-angular-treeview

syncfusion-angular-treeview

github.com/syncfusion设计与 UI0315 次安装1 周前更新
代码仓库

关于 syncfusion-angular-treeview

面向 Angular 开发者的 TreeView 实现技能,用于将层级数据呈现为可交互树形界面。内容涵盖数据绑定、选择、编辑、拖放与筛选,并提供按任务查阅的参考指南。

主要功能

  1. 01绑定层级或自引用数据
  2. 02复选框与多节点选择
  3. 03节点拖放和原位编辑
  4. 04搜索筛选与排序
  5. 05自定义节点模板和样式
  6. 06键盘导航与 RTL 支持

适用场景

  1. 01浏览文件和文件夹层级
  2. 02展示组织架构与分类目录
  3. 03构建可筛选的多级导航
  4. 04通过拖放调整树节点

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/syncfusion/angular-ui-components-skills --skill syncfusion-angular-treeview

安装后在 Claude Code 中输入/syncfusion-angular-treeview确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
accessibility-advanced.md
context-menu.md
data-binding.md
drag-and-drop.md
filtering-sorting.md
getting-started.md
node-editing.md
node-selection.md
templating.md

详细介绍

在 Angular 中实现 TreeView

TreeView 组件以树状结构显示层级数据,并内置支持复选框、拖放、就地编辑、多选、筛选、排序、模板和键盘导航等交互功能。它非常适合显示文件系统、组织结构图、类别层级、导航菜单以及任何嵌套数据结构。

何时使用此技能

  • 构建层级 UI:显示父子数据关系
  • 文件/文件夹浏览器:显示可展开/折叠的目录结构
  • 导航结构:创建菜单系统或网站层级
  • 数据组织:显示分类或嵌套数据
  • 交互式选择:实现多选或基于复选框的选择
  • 拖放界面:通过拖动节点重新组织树数据
  • 搜索/筛选功能:在大型树结构中查找节点
  • 自定义外观:按层级设置节点样式或使用模板

导航指南

选择下方的任务,前往相应的参考文档:

入门

📄 阅读: references/getting-started.md

何时阅读:首次设置 TreeView、安装包、导入模块、初始化基本组件、导入 CSS、选择主题或创建第一个树时。

数据绑定与层级结构

📄 阅读: references/data-binding.md

何时阅读:将数据源连接到 TreeView、绑定层级或自引用数据、使用 DataManager、从远程 API 加载数据、实现延迟加载(按需加载)或动态更新树数据时。

节点选择与复选框

📄 阅读: references/node-selection.md

何时阅读:启用复选框、管理复选框状态(选中/未选中/三态)、实现多选或单选、使用选择事件、获取选中节点 ID、禁用复选框或移除父节点复选框时。

节点编辑与操作

📄 阅读: references/node-editing.md

何时阅读:启用就地编辑、以编程方式添加/删除/更新节点、验证编辑后的文本、移动节点或使用节点操作方法(addNodes、removeNodes、updateNode、moveNodes)时。

拖放

📄 阅读: references/drag-and-drop.md

何时阅读:启用拖放功能、限制在特定节点上执行放置、处理拖动事件、自定义放置指示器或阻止无效操作时。

节点模板与样式

📄 阅读: references/templating.md

何时阅读:创建自定义节点模板、使用动态图标、按层级设置节点样式、自定义展开/折叠图标、显示工具提示、处理多行节点或自定义 CSS 时。

筛选与排序

📄 阅读: references/filtering-sorting.md

何时阅读:按文本筛选节点、实现搜索功能、全局或按层级排序节点,或整理树的显示顺序时。

上下文菜单集成

📄 阅读: references/context-menu.md

何时阅读:为节点操作添加上下文菜单、处理右键操作、通过菜单实现添加/编辑/删除,或创建自定义菜单项时。

无障碍、进阶功能与 API 迁移

📄 阅读: references/accessibility-advanced.md

何时阅读:实现键盘导航(方向键、Enter、Space)、ARIA 属性和无障碍合规、RTL(从右到左)支持、获取子节点、手风琴行为、使用进阶方法、从 EJ1 迁移到 EJ2 或优化性能时。

快速入门示例

以下是一个使用静态层级数据的最简 TreeView 实现:

import { Component } from '@angular/core';
import { TreeViewModule } from '@syncfusion/ej2-angular-navigations';
import { FormsModule } from '@angular/forms';

@Component({
  selector: 'app-tree-view',
  standalone: true,
  imports: [FormsModule, TreeViewModule],
  template: `
    <ejs-treeview 
      id="treeView"
      [fields]="treeFields"
      [allowMultiSelection]="true">
    </ejs-treeview>
  `
})
export class TreeViewComponent {
  // Hierarchical data structure
  treeData = [
    {
      id: '01',
      name: 'Documents',
      hasChild: true,
      expanded: true,
      subChild: [
        { id: '01-01', name: 'Work Files' },
        { id: '01-02', name: 'Personal' }
      ]
    },
    {
      id: '02',
      name: 'Downloads',
      hasChild: true,
      subChild: [
        { id: '02-01', name: 'Images' },
        { id: '02-02', name: 'Videos' }
      ]
    }
  ];

  // Field mapping configuration
  treeFields = {
    dataSource: this.treeData,
    id: 'id',
    text: 'name',
    child: 'subChild',
    hasChildren: 'hasChild',
    expanded: 'expanded'
  };
}

TreeView 的关键方法

方法用途
addNodes(nodes, target?, index?, preventTargetExpand?)在目标位置添加节点集合
removeNodes(nodeIds)按 ID 移除节点
updateNode(target, newText)替换节点文本(需要启用 allowEditing)
moveNodes(sourceNodes, target, index?, preventTargetExpand?)将节点移动到新的父节点和索引位置
getTreeData(nodeId?)获取所有树数据或特定节点数据
getAllCheckedNodes()获取所有已选中节点的 ID,包括已加载或未加载的子节点
checkAll(nodes?)选中所有或指定节点
uncheckAll(nodes?)取消选中所有或指定节点
beginEdit(nodeId)开始编辑节点
expandAll(nodes?, level?, excludeHiddenNodes?, preventAnimation?)展开所有或指定节点,可按层级展开
collapseAll(nodes?, level?, excludeHiddenNodes?)折叠所有或指定节点,可按层级折叠
ensureVisible(nodeId)滚动以显示节点
disableNodes(nodeIds)禁用指定节点
enableNodes(nodeIds)启用指定节点
getNode(nodeId)获取节点的 HTML 元素
destroy()销毁 TreeView 组件

TreeView 的关键事件

事件触发时机
created创建 TreeView 组件时
dataBound数据源绑定完成时
dataSourceChanged树数据被修改(添加/移除/更新)时
nodeClicked用户点击节点时
nodeSelected选中节点时
nodeSelecting选中节点之前(可阻止)
nodeChecked复选框状态改变时
nodeChecking复选框状态改变之前(可阻止)
nodeExpanding展开节点之前
nodeExpanded节点展开时
nodeCollapsing折叠节点之前
nodeCollapsed节点折叠时
nodeEditing编辑节点文本之前
nodeEdited节点文本编辑之后
nodeDragStart拖动操作开始时
nodeDragging正在拖动节点时
nodeDragStop拖动结束、放置之前
nodeDropped成功放置节点时
drawNode渲染每个节点之前(自定义外观)
keyPress用户按下键盘按键时
destroyedTreeView 组件销毁时

常见模式

模式 1:基于复选框的选择

启用复选框,以支持多选和分层复选框状态:

treeFields = {
  dataSource: this.treeData,
  id: 'id',
  text: 'name',
  child: 'subChild',
  hasChildren: 'hasChild'
};

showCheckBox = true;  // Enable checkboxes
autoCheck = true;     // Parent/child auto-check
模式 2:支持拖放的文件浏览器

创建可交互的文件浏览器,以便重新组织节点:

<ejs-treeview 
  [fields]="treeFields"
  [allowDragAndDrop]="true"
  [allowMultiSelection]="true"
  (nodeDragging)="onNodeDragging($event)"
  (nodeDropped)="onNodeDropped($event)">
</ejs-treeview>
模式 3:搜索和筛选

实现树节点的实时筛选:

<input 
  type="text" 
  (keyup)="filterTree($event.target.value)" 
  placeholder="Search nodes...">

<ejs-treeview 
  #treeView
  [fields]="filteredFields">
</ejs-treeview>
模式 4:可编辑树

启用节点的就地编辑和验证:

<ejs-treeview 
  [fields]="treeFields"
  [allowEditing]="true"
  (nodeEditing)="onNodeEditing($event)"
  (nodeEdited)="onNodeEdited($event)">
</ejs-treeview>

TreeView 的关键属性

属性类型用途
fieldsObject配置数据源映射(id、text、child、parentID、hasChildren、expanded、isChecked 等)
dataSourceArray层级或扁平数据数组
allowMultiSelectionBoolean启用多节点选择
showCheckBoxBoolean在节点前显示复选框
autoCheckBoolean选中父节点时自动选中子节点(默认值:true)
allowDragAndDropBoolean启用拖放功能
allowEditingBoolean启用节点原位编辑
loadOnDemandBoolean仅在展开父节点时加载子节点(默认值:true)
sortOrderString排序顺序:'Ascending'、'Descending' 或 'None'
cssClassString应用自定义 CSS 类以设置样式
enableRtlBoolean启用从右到左的布局支持
enablePersistenceBoolean保存和恢复 TreeView 状态(展开的节点、选择项)
checkedNodesArray应选中的节点 ID 数组
selectedNodesArray应选中的节点 ID 数组
nodeTemplateTemplate用于渲染节点的自定义模板
animationObject配置展开/折叠动画
allowKeyboardNavigationBoolean启用键盘导航(默认值:true)

常见用例

组织结构图:显示具有父子关系的员工层级,并使用自定义模板展示职位。

文件/文件夹浏览器:显示目录结构,并支持通过拖放在文件夹之间移动文件。

类别导航:展示多级产品类别,并使用复选框进行筛选和多选。

设置菜单:按主题组织层级偏好设置或配置选项。

知识库:展示嵌套的文档主题,并支持搜索和展开/折叠导航。

参考文件

  • getting-started.md - 安装、设置和基本初始化
  • data-binding.md - 数据源、层级结构、远程数据和延迟加载
  • node-selection.md - 复选框、多选和选择事件
  • node-editing.md - 编辑、添加、移除和更新节点
  • drag-and-drop.md - 拖放配置和限制
  • templating.md - 自定义模板、图标、样式和工具提示
  • filtering-sorting.md - 筛选、搜索和排序功能
  • context-menu.md - 上下文菜单集成和节点操作
  • accessibility-advanced.md - 键盘导航、ARIA、RTL 和高级方法

后续步骤:

  1. 从上方的导航指南中选择用例
  2. 阅读相关参考文件
  3. 根据你的数据结构调整代码示例
  4. 使用你的数据源进行测试

评论

支持 Markdown