Angular 2 - итерация по массиву json внутри объекта json
Я изучаю 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')
);
}
}
Вот как мой URL-адрес API показывает результаты:
![URL-адрес API RESULT]()
- объект json с именем "docs".
- массив json элементов с id и другими строками.
Моя цель - зациклировать каждый элемент массива и отобразить данные внутри него (id, placeID и т.д.)
Это мое приложение, которое не делает никакой итерации вообще:
![Без итераций]()
Как я могу выполнить цикл с *ngFor
каждым из элементов массива json?
Ответы
Ответ 1
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.