使用ngFor迭代“更复杂”的对象

时间:2016-07-26 10:18:00

标签: javascript arrays json typescript angular

基本上,我将数据存储在JSON文件中作为对象,格式如下:

{
    "name": {
        "source1": ____,
        "source2": ____,
        "source3": ____
    },
    "xcoord": {
        "source1": ____,
        "source2": ____,
        "source3": ____
    }
}

我使用this strategy(转到“执行多个并发的http请求”)通过服务将JSON数据加载到我的组件中。

现在我需要一个ngFor语句来遍历“name”键,返回每个源的名称值。我想在<select>中显示所有这些名称值。我还希望每个value的{​​{1}}成为数据对象“name”键中的“source1”,“source2”,“source3”。

我不确定我应该怎么做,而且我对Typescript / Angular2有点不熟悉。做我想做的最好的策略是什么?也许我应该为<option>语句创建一个管道来读取我的对象作为数组?或者我可能会创建一个重新格式化数据的新类,只返回一个名称数组?

无论哪种方法更好,我很遗憾不知道如何做任何一种方法。我很感激一些帮助!

1 个答案:

答案 0 :(得分:0)

  

我需要一个ngFor语句来遍历“name”键,   返回每个源的名称值

要使用name迭代jsonObject.name,您需要使用var selectOptions = ''; var _getName = jsonObject.name; // will return value of name object Object.keys(_getName).forEach(function(item){ selectOptions +='<option value ="'+_getName[item]+'">'+(_getName[item])+'</option>';}) $("#someSelectId").append(selectOptions) 来访问它。

Object.keys将返回其属性的数组。

forEach用于遍历数组

{{1}}

JSFIDDLE