如何从嵌套 Json 数组角度 2 打印和分离键和值并将其添加到选择框中

Posted

技术标签:

【中文标题】如何从嵌套 Json 数组角度 2 打印和分离键和值并将其添加到选择框中【英文标题】:How to print and separate key and values from Nested Json array angular 2 and add it in a a select box 【发布时间】:2018-03-16 20:40:17 【问题描述】:

我有一个 Json 数据模型,我想从中获取数据并将其添加到选择框中作为我的下拉项。 在这样做时,我在将数据提取到选择框时遇到了困难。 迭代工作正常。但是整个 Json 数组正在被打印出来。我只想打印我的 3 个主要标题。

错误消息:-错误错误:找不到类型为“object”的不同支持对象“[object Object]”。 NgFor 只支持绑定到数组等 Iterables。

我也在添加我的示例 Json 和预期输出

预期输出

LEED V4 BD+C LEED V4 ID+C LEED V4 EBOM

Json 示例


    "Ratings": 
        "LEED V4 BD+C": [

        ],
        "LEED V4 ID+C": [

        ],
        "LEED V4 EBOM": [

        ]
    

app.ts

 template: `
            <div class="col-md-6 form-group">
               <label class="control-label">Rating System <span style="color: #2196f3;">*</span></label>
                <select class="form-control" id="productparameter" *ngFor="let item of ratings.Ratings" >
                <option value="">Select Rating</option>
                <option value="">item</option>
              </select>
              </div>
  `,
)

export class App 
 public ratings: any =
    "Ratings": 
        "LEED V4 BD+C": [

        ],
        "LEED V4 ID+C": [

        ],
        "LEED V4 EBOM": [

        ]
    

  constructor( ) 

    console.log( this.ratings.Ratings);

  

添加我的插件链接:-https://plnkr.co/edit/pgbeS9iRkAzgWVNrLNQJ?p=preview

【问题讨论】:

【参考方案1】:

首先,您需要在option 中使用ngFor,而不是select 框本身。

<select class="form-control" id="productparameter"  >
   <option value="">Select Rating</option>
   <option *ngFor="let item of elements" value="">item</option>
</select>

您可以在组件模型中声明一个array,它将采用Object.keys(this.ratings.Ratings),所有可能的密钥都将存储在其中。

public elements: any = Object.keys(this.ratings.Ratings);

然后在你的ngFor 中使用这个新的array,如下所示:

*ngFor="let item of elements"

这是your updated Plunkr

【讨论】:

【参考方案2】:

我没有得到你想要显示的内容,但我试过了:

//our root app component
import Component, NgModule, ChangeDetectorRef,Pipe from '@angular/core'
import BrowserModule from '@angular/platform-browser'
import FormsModule from '@angular/forms'

@Component(
   selector: 'my-app',
   template: `
        <div class="col-md-6 form-group">
           <label class="control-label">Rating System <span style="color: #2196f3;">*</span></label>
            <select class="form-control" id="productparameter">
            <option value="">Select Rating</option>
            <option value="" *ngFor="let rat of rating">rat</option>
          </select>
          </div>`,
   )

  export class App 

     public rating : any = ["LEED V4 BD+C":["One"],"LEED V4 ID+C":["two"],"LEED V4 EBOM":["Three"]]
    constructor( ) 

  

 @NgModule(
   imports: [ BrowserModule, FormsModule ],
   declarations: [ App ],
   bootstrap: [ App ]
 )
 export class AppModule 

它的输出将是:

【讨论】:

以上是关于如何从嵌套 Json 数组角度 2 打印和分离键和值并将其添加到选择框中的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 在复杂的 JSON 数组中查找和打印重复项

使用python打印嵌套在数组中的json对象

打印嵌套数组关联数组php

如何使用 angular2 ngFor 深度嵌套的 json 值

AWK Mac OSX如何在同一行打印数组键和数组值

如何使用角度访问 HTML 中的 JSON 数组对象?