Angular 无法在Priming Treenode组件中显示数据

Angular 无法在Priming Treenode组件中显示数据,angular,primeng,treenode,ptree,primeng-treetable,Angular,Primeng,Treenode,Ptree,Primeng Treetable,我试图在angular 5项目中以Treenode格式显示数据 我正在从服务获取数据,数据格式如下(对象形式): 我的HTML如下所示: <p-tree [value]="files"></p-tree> 我得到的错误如下: <p-tree [value]="files"></p-tree> 错误: 找不到不同的支持对象“[对象]” <p-tree [value]="manukasTree"></p-tree> 请您帮

我试图在angular 5项目中以Treenode格式显示数据

我正在从服务获取数据,数据格式如下(对象形式):

我的HTML如下所示:

<p-tree [value]="files"></p-tree>
我得到的错误如下:

<p-tree [value]="files"></p-tree>
错误:

找不到不同的支持对象“[对象]”

<p-tree [value]="manukasTree"></p-tree>
请您帮助我将对象转换为Treenodes格式的数组


提前感谢。

当您将类型声明为TreeNode[]时,您需要知道它引用的是哪个对象

请按照下面的例子。(文件名仅为示例)。请随意使用您自己的

创建名为
preset.data.ts的文件

export class PresetsProjectsData {

  static manukas = [
    {
      'label': 'Manuka',
      'data': 'Manuka',
      'expandedIcon': 'fa-folder-open',
      'collapsedIcon': 'fa-folder',
      'selectable': false,
      'children': [
        {'label': 'Monofloral Manuka', 'icon': 'avatar', 'data': 'fe'},
        {'label': 'Multifloral Manuka', 'icon': 'avatar', 'data': 'be'}
      ]
    }
  ];
}
在html文件中:

<p-tree [value]="manukasTree"></p-tree>
在你们的出口类申报单上。如下图所示绘制地图

 manukasTree: TreeNode[] = PresetsProjectsData.manukas;

希望它能起作用

您可以使用递归函数在.ts文件中构造
文件:TreeNode[]
属性,以确保正确引用该文件:

import { TreeNode } from 'primeng/primeng';

files: TreeNode[] = [];

ngOnInit() {
  this.dataStore.forEach( (item: Data) => {
            if (!item.parent) {
              this.files.push(this.generateTreeStructure(item));
            }
  });
}

generateTreeStructure( parentNode: Data ): TreeNode {
        let parentNodeChildren: TreeNode[] = [];
        let item: TreeNode = {
          label: parentNode.title,
          data: JSON.stringify(parentNode),
          expandedIcon: "fa fa-folder-open",
          collapsedIcon: "fa fa-folder",
          children: []
        };
        this.dataStore.forEach(item => {
          if (parentNode.id === item.parent.id) {
            let childNode: TreeNode = {
              label: item.title,
              data: JSON.stringify(item),
              expandedIcon: "fa fa-folder-open",
              collapsedIcon: "fa fa-folder",
              children: []
            };
            childNode = this.generateTreeStructure(item);
            parentNodeChildren.push(childNode);
          }
        });
        item.children.push(...parentNodeChildren);
        return item;
  }

您的对象是在组件中还是添加到外部文件中?对象是从我放在assets文件夹中的.json文件加载的,我正在以以下方式访问该文件:
this.http.get(“http://localhost:4200/assets/files.json“”
import { TreeNode } from 'primeng/primeng';

files: TreeNode[] = [];

ngOnInit() {
  this.dataStore.forEach( (item: Data) => {
            if (!item.parent) {
              this.files.push(this.generateTreeStructure(item));
            }
  });
}

generateTreeStructure( parentNode: Data ): TreeNode {
        let parentNodeChildren: TreeNode[] = [];
        let item: TreeNode = {
          label: parentNode.title,
          data: JSON.stringify(parentNode),
          expandedIcon: "fa fa-folder-open",
          collapsedIcon: "fa fa-folder",
          children: []
        };
        this.dataStore.forEach(item => {
          if (parentNode.id === item.parent.id) {
            let childNode: TreeNode = {
              label: item.title,
              data: JSON.stringify(item),
              expandedIcon: "fa fa-folder-open",
              collapsedIcon: "fa fa-folder",
              children: []
            };
            childNode = this.generateTreeStructure(item);
            parentNodeChildren.push(childNode);
          }
        });
        item.children.push(...parentNodeChildren);
        return item;
  }