【问题标题】:Angular *ngFor nested loop [duplicate]Angular *ngFor嵌套循环[重复]
【发布时间】:2017-09-30 20:01:13
【问题描述】:

我有一个带有这样的对象数组的 json

questions = [
        {
            question: "What is your name?",
            options: [
                {
                    option1 : "Abc",                    
                }, {
                    option2 : "Def"
                }, {
                    option3 : "Ghi"
                }, {
                    option4 : "Jkl"
                }
            ]
        },
        {
            question: "Where is your Home Town?",
            options: [
                {
                    option1: "Abc"
                }, {
                    option2: "Def"
                }, {
                    option3: "Ghi"
                }, {
                    option4: "Jkl" 
                }
            ]
        }
      ]

在我看来,我想像这样用 ngFor 渲染那个 json

你叫什么名字?

  • Abc
  • 默认
  • Jkl

【问题讨论】:

标签: angular ionic2 angular2-template angular2-directives


【解决方案1】:
questions = [{
            question: "What is your name?",
            options: [ "Abc", "Def", "Ghi", "Jkl"] 
           }, {            {
            question: "Where is your Home Town?",
            options: [ "Abc", "Def", "Ghi", "Jkl"] 
              }]

<div *ngFor="let q of questions">
    <span> {{q.question}}</span>
    <ul>
      <li *ngFor="option in q.options">{{option}} </li>
   </ul>
</div>

你应该使用如上修改你的 json 格式

【讨论】:

  • 不应该是let q of questions吗?
  • @Aravind 您正在尝试更改我认为的问题格式,但如果假设数据来自已修复的网络服务,那么这将不起作用,我想只有当他具有它可能工作的灵活性时
  • 是的@RahulSingh 数据来自网络服务
  • @Ricky 您可能必须使用我建议的方法,使用管道来格式化数据。根据您的需要
  • @RahulSingh,不需要option1, option2等属性,这样我们可以减少数据传输的大小。
【解决方案2】:

创建一个这样的管道

import { PipeTransform, Pipe } from '@angular/core';

@Pipe({name: 'keys'})
export class KeysPipe implements PipeTransform {
  transform(value, args:string[]) : any {
    let keys = [];
    for (let key in value) {
      keys.push(key);
    }
    return keys;
  }
}

这样调用管道

<div *ngFor="#q of questions">
    <span> {{q.question}}</span>
    <ul>
      <li *ngFor="#option of q.options  ">
        <span *ngFor="#key of option | keys ">{{key}} : {{option[key]}}  </span>
      </li>
   </ul>
</div>

【讨论】:

  • 我得到了对象的值,但我只想要值。
  • @Ricky 检查更新的答案
猜你喜欢
  • 1970-01-01
  • 2020-01-23
  • 2021-01-12
  • 1970-01-01
  • 2018-10-14
  • 2018-10-13
  • 2017-01-11
  • 2017-05-23
相关资源
最近更新 更多