【问题标题】:how to create tree from flat array using in Angular如何在 Angular 中使用平面数组创建树
【发布时间】:2020-08-22 04:29:30
【问题描述】:

我需要使用 Angular 从平面数据数组中显示一棵树,并且我愿意使用任何包来渲染树。作为用户,我应该能够单击一个节点并找出节点 ID 和标题等详细信息。树应该在加载时展开,但用户应该能够根据需要折叠父节点。我的节点数据模型如下所示:

export class Node {
    nodeID: number;
    title: string;
    parentNodeID: number;
}

我的数据如下所示:

public Nodes: Node[] = [
    {
        nodeID: 1;
        title: parent1;
        parentNodeID: null;
    },
    {
        nodeID: 2;
        title: child1;
        parentNodeID: 1;
    },
    {
        nodeID: 3;
        title: child2;
        parentNodeID: 1;
    }
]

【问题讨论】:

    标签: arrays angular tree flat


    【解决方案1】:

    您需要一个递归算法,该算法通过您的平面数组查看循环并将 parentNodeID 映射到 Node 以生成树结构,然后使用树组件(例如 angular-tree-component)来呈现您的树。 我在 stackblitz 上做了一个演示。看看,让我知道它是否有帮助。 https://stackblitz.com/github/ramin-ahmadi/Flat-Tree

    【讨论】:

      【解决方案2】:

      有很多包可以完成这项工作,例如This one。我没有尝试过,但似乎很容易使用。如果可以,请更改数组中的键。否则,只需将您的项目映射到另一个数组中,例如:

      const newArray = array.map(item =>({
            id: item.nodeID,
            name: item.title,
            children: array.filter(el => el.parentNodeID === parentId), // Not sure about that, but this is the idea
          })
        );
      

      newArray 将是提供给你们三个的数据。

      【讨论】:

      • 谢谢昆汀。您的解决方案的复杂性是多少?
      • 复杂性是什么意思?正如我所说,我没有尝试过,但它看起来很容易。在此处查看文档:angular2-tree.readme.io/docs。现在,这是一个示例,找到适合您需要的树生成器:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      相关资源
      最近更新 更多