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

时间:2017-03-23 01:56:37

标签: json angular pipe

我试图从深层嵌套的json对象中获取价值。

我尝试使用管道,但我成功获取了键和值,但它们不是我想要获得的正确键和值。

有人可以帮我解决以下问题吗?

data: {
category:[
{0:{one:'test1', **two**:'test2'}},
{1:{one:'test3', **two**:'test4'}},
{2:{one:'test5', **two**:'test6'}}
]
number:[]
]
}

我想要两个'两个'值!

我目前有管道

import { Pipe, PipeTransform } 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: key, value: value[key]});
    }
    return keys;
  }
}

在我的组件模板中,我有

<div *ngFor="let one of theme | keys">
  <div *ngFor = " let two of one.key | keys">
    <div *ngFor = "let three of two.key>
         <p id="thm-title">{{three.value['two']}}</p>
    </div>
  </div>
</div>

1 个答案:

答案 0 :(得分:2)

您的管道按预期工作,您只需对*ngFor循环进行一些更改

您在问题中混合了数组和对象,因此我假设您的数据结构如下。此循环将输出test2 test4 test6

data = {
    category: [
        { 0: { one: 'test1', two: 'test2' } },
        { 1: { one: 'test3', two: 'test4' } },
        { 2: { one: 'test5', two: 'test6' } }
    ]
}

HTML

<div *ngFor="let one of data | keys">
    <div *ngFor="let two of one.value">
        <div *ngFor="let three of two | keys">
            {{ three.value['two'] }}
        </div>
    </div>
</div>