【问题标题】:Adding children to PrimeNg TreeTable programmatically以编程方式将子级添加到 PrimeNg TreeTable
【发布时间】:2019-06-26 15:05:44
【问题描述】:

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

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

this.treeTableModel.push(parentNode);

但是当我尝试这样做时:

parentNode.children.push(childNode);

孩子未定义?

实现这一点的最佳方法是什么?

【问题讨论】:

    标签: angular primeng treetable


    【解决方案1】:

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

    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];
    }
    

    【讨论】:

      【解决方案2】:

      首先,您可以在这里查看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);

      【讨论】:

      • 但是如何推送到选定节点的数组? [(选择)] =“选定节点”。你不能再次初始化它,它没有孩子
      【解决方案3】:

      根据 Ahmed 的帖子,在您作为父节点或父节点推送到 TreeNode 之后,您可以刷新它,但要这样做。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-19
        • 1970-01-01
        • 1970-01-01
        • 2018-12-28
        • 1970-01-01
        • 2016-07-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多