以编程方式将 children 添加到 PrimeNg TreeTable

Adding children to PrimeNg TreeTable programmatically

我想以编程方式将子节点添加到 TreeTable。添加 parent-nodes 没有问题,例如:

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

this.treeTableModel.push(parentNode);

但是当我尝试这样做时:

parentNode.children.push(childNode);

Children 未定义?

实现它的最佳方法是什么?

首先,你可以看看TreeNodeapi这里: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);

根据 Ahmed 的 post,在使用 child/ren 作为父节点或父节点推送到 TreeNode 后,您可以刷新它,但要执行此操作。

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

TreeTable 数据反映了您刚刚推入 TreeNode 的内容。

您需要将空 children 添加到 parent,然后将(推送)数据添加到 children

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

this.treeTableModel.push(parentNode);

添加(推送)数据到 children

onNodeExpand 函数中

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