angular2和iter over hash in array

时间:2016-07-31 22:25:26

标签: angular angular2-template

我有一个看起来像这样的json对象。

models = [{
    "mid_704a2eb91eb54299bb3cc4487bf14557": {
        "data": {},
        "name": "uberme"
    },
    "mid_8ccd9a1340b54e76915c690b46eb996a": {
        "data": {},
        "name": "test"
    }
}]

在我的模板中,我如何迭代,因此表格如下所示:

uberme mid_704a2eb91eb54299bb3cc4487bf14557
test  mid_8ccd9a1340b54e76915c690b46eb996a

我只知道如何做以下但不起作用;

      <tr *ngFor="let model of models">
      {{ model | json}}
      <td>{{ model.name }}</td>

1 个答案:

答案 0 :(得分:0)

问题是这些属性名称(例如mid_704a2eb91eb54299bb3cc4487bf14557)不是固定的,并且事先已知您使用它们,因此您需要使用Object.keys()来获取它们的值。

所以models是:

models = [{
    "mid_704a2eb91eb54299bb3cc4487bf14557": {
        "data": {},
        "name": "uberme"
    },
    "mid_8ccd9a1340b54e76915c690b46eb996a": {
        "data": {},
        "name": "test"
    }
}]

然后Object.keys(models[0])返回['mid_704a2eb91eb54299bb3cc4487bf14557', 'mid_8ccd9a1340b54e76915c690b46eb996a']

这样,如果对象始终保持该结构,您可以使用类似:

<tr *ngFor="let key of Object.keys(models[0])">
    <td>{{ models[0][key].name }}  {{ key }}</td>