javascript - 在 Angular 模板中循环遍历 Javascript 对象和子对象

标签 javascript angular loops object

我有以下 js 对象:

{
    "id": "1554038371930_ajhnms9ft",
    "name": "CPS",
    "nodes": [
        {
            "id": "1554038905938_le34li2cg",
            "name": "Consumer Journey",
            "nodes": [
                {
                    "id": "1554039157958_kwab8rj5f",
                    "name": "Average Rating",
                    "nodes": []
                },
                {
                    "id": "1554039174126_p47ugwkbv",
                    "name": "Product Quality",
                    "nodes": [
                        {
                            "id": "1554039298091_ewdyefkql",
                            "name": "Performance",
                            "nodes": []
                        },
                        {
                            "id": "1554039306834_qf54k1dqe",
                            "name": "Reliability",
                            "nodes": []
                        },
                        {
                            "id": "1554039320002_vfkenjmct",
                            "name": "Comfort",
                            "nodes": []
                        }
                    ]
                },
                {
                    "id": "1554039197951_ajvv8587d",
                    "name": "Supply & Delivery",
                    "nodes": []
                },
                {
                    "id": "1554735679177_g5tini7ga",
                    "name": "Behind Product",
                    "nodes": [
                        {
                            "id": "1554736595466_nt4owp9in",
                            "name": "Influencers",
                            "nodes": []
                        },
                        {
                            "id": "1554736608593_58yomqpya",
                            "name": "Brand Confidence",
                            "nodes": []
                        }
                    ]
                },
                {
                    "id": "1554736413715_jhro1oh0r",
                    "name": "Economical Value",
                    "nodes": [
                        {
                            "id": "1554736664421_wng97pbz8",
                            "name": {
                                "en": "Price"
                            },
                            "nodes": []
                        },
                        {
                            "id": "1554736676408_d4kiy2wv8",
                            "name": "Promotion & Reward",
                            "nodes": []
                        }
                    ]
                }
            ]
        }
    ]
}

我想在我的 Angular HTML 模板中循环遍历它,这样我就可以获得以下列表:

CPS
    Consumer Journey
        Average Rating
        Product Quality
            Performance
            Reliability
            Comfort
        Supply & Delivery
        Behind Product
            Influencers
            Brand Confidence
        Economical Value
            Price
            Promotion & Reward

PS:我的关卡数量未知!

我尝试实现这一点,但我的解决方案仅在我有已知数量的级别时才有效:

<div *ngFor="let item of data">
  <p>{{ item.name }}</p>
  <div *ngIf="item.nodes.length">
    <div *ngFor="let subItem of item.nodes">
      <p>{{ subItem.name }}</p>
      <div *ngIf="subItem.nodes.length">
        <div *ngFor="let child of subItem.nodes">
          {{ child.name }}
        </div>
      </div>
    </div>
  </div>
</div>

最佳答案

您需要一个递归组件来循环 n 个级别:

@Component({
  selector: 'recursive-list',
  template: `
    <div *ngFor="let item of data">
      <p>{{ item.name }}</p>
      <recursive-list *ngIf="item.nodes.length" [data]="item.nodes"></recursive-list>
    </div>
  `
})
export class RecursiveListComponent {
  @Input() data;
}

关于javascript - 在 Angular 模板中循环遍历 Javascript 对象和子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59327549/

相关文章:

javascript - 为什么现代 JavaScript 框架不鼓励与 DOM 直接交互

javascript - 旋转的 HTML 元素 Angular 的 XY 坐标

javascript - Angular 5 : Argument of type 'void' is not assignment to parameter of type '{} | PromiseLike<{}>'

javascript - Angular:一种识别服务调用者的方法

javascript - 在 JavaScript 中使用数组循环调用函数

javascript - 在 JavaScript 中单击按钮后删除输出

angular - 无法使用 Visual Studio github 推送 Angular 项目中的更改

jquery - 我怎样才能让 jQuery 动画在完成后无限循环?

javascript - 延迟延迟javascript循环

javascript - Angular 7 map 运算符无法与 httpClient Observable 一起使用