Angular 2 - 迭代json对象内的json数组

时间:2016-03-22 18:39:59

标签: json angular

我正在学习Angular 2,我一直在使用静态数组,现在我正在尝试学习更多有关读取远程数据的知识。

我的app.component.ts

import {Component} from 'angular2/core';
import {Http, Response} from 'angular2/http';
import {Observable} from 'rxjs/Rx';

@Component({
  selector: 'my-app',
  template:`
  <h1>Angular2 HTTP Demo App</h1>
  <h2>Foods</h2>
  <ul>
    <li *ngFor="#doc of docs">{{doc.id}}</li>
  </ul>
  `
})
export class AppComponent {

  public foods;
  public books;
  public movies;

  constructor(private http: Http) { }

  ngOnInit() {
    this.getFoods();
  }

  getFoods() {
    this.http.get('http://my API URL')
      .map((res:Response) => res.json())
      .subscribe(
        data => { this.foods = data},
        err => console.error(err),
        () => console.log('done')
      );
  }

}

这是我的API网址显示结果的方式:

API URL RESuLT

  1. 一个名为“docs”的json对象。
  2. 带有id和其他字符串的json数组项目。
  3. 我的目标是循环每个数组项并在其中显示数据(id,placeID等)。

    这是我的应用程序,根本不进行迭代:

    No iteration

    如何循环使用每个json数组项的*ngFor

1 个答案:

答案 0 :(得分:11)

Plunker

循环播放数组:

<li *ngFor="let doc of docs">{{doc.id}}</li>

循环使用对象属性:

您必须生成Array对象属性

generateArray(obj){
   return Object.keys(obj).map((key)=>{ return obj[key]});
}

并像

一样使用它
<li *ngFor="let doc of docs">
   <span *ngFor="let v of generateArray(doc)"> {{v}} </span>
</li>

或者您可以使用Pipe.