ng2-tree控件

ng2-tree

点击我链接


用法

1.npm install --save ng2-tree

  1. 在应用的module里导入TreeModule
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { BrowserModule } from '@angular/platform-browser';
import { TreeModule } from 'ng2-tree';
 
@NgModule({
  declarations: [MyComponent],
  imports:      [BrowserModule, TreeModule],
  bootstrap:    [MyComponent]
})
export class MyModule {
}
  1. 然后,我们需要在使用时引入TreeModel,[tree]属性绑定了这个树形控件所需要的所有数据和一些设置:
// 1 -导入需要的类和接口
import { TreeModel } from 'ng2-tree';
 
@Component({
  selector: 'myComp',
  // 2 - 为tree属性设置对象
  template: `<tree [tree]="tree"></tree>`
})
class MyComponent {
  // 3 - 确保tree对象是treeModel的实例
  public tree: TreeModel = {
    value: 'Programming languages by programming paradigm',
    children: [
      {
        value: 'Object-oriented programming',
        children: [
          {value: 'Java'},
          {value: 'C++'},
          {value: 'C#'}
        ]
      },
      {
        value: 'Prototype-based programming',
        children: [
          {value: 'JavaScript'},
          {value: 'CoffeeScript'},
          {value: 'Lua'}
        ]
      }
    ]
  };
}
  1. 此外,你还需要引入style让tree可以使用,在angular-cli.json
    文件里引入"../node_modules/ng2-tree/styles.css"
  2. 最后,tree拥有诸多监听事件,以满足需求,例如节点选择事件:
// 1 -导入相关类和接口
import { TreeModel, NodeEvent } from 'ng2-tree';
 
@Component({
  selector: 'myComp',
  // 2 - 监听事件并处理
  template: `<tree [tree]="tree" (nodeSelected)="logEvent($event)"></tree>`
})
class MyComponent {
  public tree: TreeModel = { ... };
 
  // 3 - print caught event to the console
  public logEvent(e: NodeEvent): void {
    console.log(e);
  }
}

API

tree所有的API如下

 <tree
      [tree]="tree"
      [settings]="settings"
      (nodeRemoved)="handleRemoved($event)"
      (nodeRenamed)="handleRenamed($event)"
      (nodeSelected)="handleSelected($event)"
      (nodeMoved)="handleMoved($event)"
      (nodeCreated)="handleCreated($event)"
      (nodeExpanded)="handleExpanded($event)"
      (nodeCollapsed)="handleCollapsed($event)">
 </tree>

tree

[tree]

  • 引入接口import { TreeModel } from 'ng2-tree';,[tree]属性
  • 接口定义:
interface TreeModel {
  value: string | RenamableNode;
  id: string | number;
  children?: Array<TreeModel>;
  loadChildren?: ChildrenLoadingFunction;
  settings?: TreeModelSettings;
}

参照上面的用法可以快速构造出 tree所需要的数据和一些设置
数据:点击查看详细
设置:treeModel里还一个可以可选的配置属性

{
  value: 'Prototype-based programming',
  settings: {
    'static': true,
    'rightMenu': true,
    'leftMenu': true,
    'cssClasses': {
      'expanded': 'fa fa-caret-down fa-lg',
      'collapsed': 'fa fa-caret-right fa-lg',
      'leaf:': 'fa fa-lg',
      'empty': 'fa fa-caret-right disabled'
    },
    'templates': {
      'node': '<i class="fa fa-folder-o fa-lg"></i>',
      'leaf': '<i class="fa fa-file-o fa-lg"></i>',
      'leftMenu': '<i class="fa fa-navicon fa-lg"></i>'
    }
  },
  children: [
    {value: 'JavaScript'},
    {value: 'CoffeeScript'},
    {value: 'Lua'}
  ]
}

[setting]

[setting]对象必须是Ng2TreeSettings类型,现在只有一个属性可用 - rootIsVisible,此设置允许您使树的根节点不可见,此属性是可选的

const treeSettings: Ng2TreeSettings = {
  rootIsVisible: false
}

events

ng2-tree提供了大量有用的事件供使用
下图简单说明了事件的类型

NodeEvent是tree事件等级的最高级。它定义了节点的事件接收器。
NodeDestructiveEvent是所有对tree做出结构或者属性值更改的所有事件的父类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,948评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,373评论 25 708
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,958评论 6 342
  • 刚看了战狼2,总觉得要写点什么,这么有触动的电影,就像投在心底的波浪,如果你不画出来如果你不说出来如果你不描述出来...
    王神马阅读 211评论 0 0
  • 很伤心,很伤心 我的。。 别人的。。 想说点什么的。。 题目 要求从一个字符串中寻找一个子字符串,要求是,连续,没...
    Myth52125阅读 3,850评论 0 0