Options
Pass options to the Tree component
<Tree [nodes]="nodes" [focused]="true" [options]="options"></Tree>
nodes
Array of root nodes of the tree.
Each node may contain the following fields:
- id (required) - a unique ID (among siblings) that will be used to identify the path to the node in the tree
- name - will be displayed by default in the tree
- children - an array of the node's children
- hasChildren - for async data load. Denotes that this node might have children, even when 'children' attr is empty
- isExpanded - determines whether the node starts as expanded by default
Example:
[ { id: 1, name: 'root1', isExpanded: true, children: [ { id: 2, name: 'child1' }, { id: 3, name: 'child2' } ] } ]
focused
Whether the tree should be focused. Key navigation only works when the tree is focused.
Default value: false.
The options object
The following properties of the options object are available.
You can find them in ITreeOptions interface in defs/api.ts
displayField
A string representing the attribute of the node to display.
Default value:
name.For example, if your nodes have a
titleattribute that should be displayed, use:options = { displayField: 'title' }
childrenField
A string representing the attribute of the node that contains the array of children.
Default value:
children.For example, if your nodes have a
nodesattribute, that contains the children, use:options = { childrenField: 'nodes' }
idField
A string representing the attribute of the node that contains the unique ID.
This will be used to construct thepath, which is an array of IDs that point to the node.
Default value:id.For example, if your nodes have a
uuidattribute, that contains the unique key, use:options = { idField: 'uuid' }
isExpandedField
A string representing the attribute of the node that contains whether the node starts as expanded.
Default value:isExpanded.For example, if your nodes have an
expandedattribute, that contains the unique key, use:options = { isExpandedField: 'expanded' }
treeNodeTemplate
This could be either a string, or a component. This template will be displayed for each node of the tree.
When using a string, you have thenodevariable available to use, which is the original node, wrapped with TreeNode.
When using a component, you receive the node as Input. You can see theITreeNodeTemplateComponentinterface for the component indefs/api.ts.You can access the original data on
node.data.Also, you can use all methods of TreeNode on 'node' itself, such as
isLeaf,toggle,isCollapsed,fireEventand many more. SeeITreeNode, as defined indefs/api.ts.Default value: '{{ node.displayField }}'
Examples:
Stringoptions = { treeNodeTemplate: '<a [href]="node.link">{{ node.data.name }}</a>' }Component
@Component({ template: '<a (click)="node.toggle())">{{ node.data.name }}</a>' }) class MyTreeNodeTemplate { @Input() node: TreeNode; } options = { treeNodeTemplate: MyTreeNodeTemplate }
loadingComponent
This could be either a string, or a component. This template will be used when loading children asynchronously.
Default value: 'loading...'
Examples:
Stringoptions = { loadingComponent: 'loading, please wait...' }Component
@Component({ template: '<img src="loading.gif"/>' }) class MyLoadingComponent { } options = { loadingComponent: MyLoadingComponent }
getChildren
Function for loading a node's children.
The function receives a TreeNode, and returns a value or a promise that resolves to the node's children.This function will be called whenever a node is expanded, the
hasChildrenfield is true, and thechildrenfield is empty.
The result will be loaded into the node's children attribute.Example:
options = { getChildren: (node:TreeNode) => { return request('/api/children/' + node.id); } }
hasCustomContextMenu
Determines whether the native context menu should be prevented on right-click.
Opening the actual context menu can be handled using the onContextMenu, or inside a custom template.Default value: false
context
This can be used inside the custom template, when you want to call methods or use properties from the encapsulating component.
Default value: null
Example:
MyComponent { treeOptions = { treeNodeTemplate: '{{ node.data.name }} <button ng-click="context.doSomething()">Go!</button>' context: this } doSomething() { } }
actionMapping
Rewire which trigger causes which action using this attribute, or create custom actions / event bindings.
See the Action Mapping Section for more details.
Default value: see Action Mapping Section
For example, overriding shift+click to do multi select, and
enterkey to do a custom callback:import { TreeComponent, TreeNode, TREE_ACTIONS, KEYS, IActionMapping } from 'angular2-tree-component'; const actionMapping:IActionMapping = { mouse: { click: TREE_ACTIONS.TOGGLE_SELECTED_MULTI }, keys: { [KEYS.ENTER]: (tree, node, $event) => alert(`This is ${node.data.name}`) } }; MyComponent { treeOptions = { actionMapping } } <Tree [nodes]="nodes" [options]="treeOptions"></Tree>
isHiddenField
The name of the node's field that determines if the node's element is displayed or not.
Default value:
isHidden.For example, if one of your nodes has a
hiddenattribute, that contains true, and you give the following configuration, then it will not be displayed:options = { isHidden: 'hidden' } nodes = [ { id: 1, hidden: true, name: 'node1'}, { id: 1, name: 'node2'}, ... ]
Updated less than a minute ago
