15

I'm learning Angular 2 and I've been working with static arrays, and now I'm trying to learn more about reading remote data.

My 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')
      );
  }

}

This is how my API url show the results:

API URL RESuLT

  1. a json object named "docs".
  2. a json array of items with id's and other strings.

My goal is to loop each array item and show the data inside it (id, placeID, etc..)

This is my app, which makes no iteration at all:

No iteration

How I can loop with the *ngFor each of ths json array items?

2
  • what does docs() do ? Commented Mar 22, 2016 at 19:07
  • Nothing, it's just some trick I found around and tried to use it. Commented Mar 22, 2016 at 19:45

1 Answer 1

11

Plunker

To loop over Array:

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

To loop over Object Properties:

You will have to generate an Array of the object properties

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

and use it like

<li *ngFor="let doc of docs">
   <span *ngFor="let v of generateArray(doc)"> {{v}} </span>
</li>

Or you can use as Pipe.

Sign up to request clarification or add additional context in comments.

10 Comments

Thats what I have tried to do (discared the () from my code), but it's not working (no iteration at all).
can you please make a live demo ? Because if data is right, Iterations must happen. there must be something wrong with how you get the data for docs.
What files do I actually need to upload so the app will work on my web hosting? I've been trying to upload all the directory and filese and it's about 50-100MB i.imgur.com/sU9INQ5.png * I Have updated my post with a running screenshot of the app*
Screenshot didn't help. and you don't need to upload your app. all you need to do is create a demo with iteration code and data on Plunker
This worked for me ! I am able to iterate through a list inside another list . Thank you !
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.