以编程方式将子项添加到PrimeNg TreeTable

时间:2017-05-01 18:54:31

标签: angular primeng treetable

我想以编程方式将childNodes添加到TreeTable。添加父节点没有问题,如:

var parentNode: TreeNode = { data: {
        'col1': 'aaa',
        'col2': 'aaa',
      }};

this.treeTableModel.push(parentNode);

但是当我试图这样做时:

parentNode.children.push(childNode);

儿童未定义?

实现此目标的最佳方式是什么?

3 个答案:

答案 0 :(得分:1)

首先,您可以在此处查看TreeNode api:https://github.com/primefaces/primeng/blob/bb1792eac98c7beb9d18ff68bed99408ad650108/components/common/api.ts

第二,你像这样初始化了parentNode

var parentNode: TreeNode = { data: {
        'col1': 'aaa',
        'col2': 'aaa',
      }};

parentNode此时没有属性children。你必须添加它。 children是一个TreeNode数组:TreeNode[]所以您可以做的是:

var parentNode: TreeNode =
       { 
        data: {
          'col1': 'aaa',
          'col2': 'aaa',
         },
         children:[];
       };

现在children被初始化为空数组,您可以push到它:

this.treeTableModel.push(parentNode);

答案 1 :(得分:0)

按照艾哈迈德(Ahmed)的帖子,将TreeNode作为父级或带有孩子/父级的父级推送到树节点后,您可以刷新它,但是这样做。

this.treeTableModel = [... this.treeTableModel];

TreeTable数据反映了您刚刚推送到TreeNode中的内容。

答案 2 :(得分:0)

您需要向父级添加空子级,然后向子级添加(推送)数据

var parentNode: TreeNode = { 
    data: {
        'col1': 'aaa',
        'col2': 'aaa',
      },
    children: [{data: {}}]
    };

this.treeTableModel.push(parentNode);

向孩子添加(推送)数据

onNodeExpand功能上

onNodeExpand(e: event) {
    e['node']['children'] = childData;
    this.treeTableModel = [...this.treeTableModel];
}