2017-01-29 2 views
-2

Ich entwickle eine App in eckigen 2. Ich habe einen Dienst erstellt, jetzt möchte ich bestimmte Array von JSON-Daten erhalten, wie ich bekommen kann.Wie bekomme ich ein Array von JSON-Daten in Angular 2

Ich habe Service-Code wie dieses

getProjects(): Promise<Project>{ 
return this.getData() 
    .toPromise() 
    .then(response => response.json()) 
    .catch((error: string) => console.log(error)); 
} 

dies alle JSON-Daten zurückgibt, aber ich möchte nur „Projekte“ Array von json geholt werden.

JSON Code

{ 
    "features":[], 
    "posts":{}, 
    "Projects":[ 
    { 
     "id":"proj-1", 
     "name":"Design for creative", 
     "meta":{ 
      "date":"03 November, 2016", 
      "url":"http://www.pixelsocket.com", 
      "skills":[ 
       "ui design", 
       "programming", 
       "marketing" 
      ] 
     }, 
     "images":[ 
      "assets/images/design-creative-01.jpg", 
      "assets/images/design-creative-02.jpg", 
      "assets/images/design-creative-03.jpg", 
      "assets/images/design-creative-04.jpg" 
     ], 
     ... 
} 

Update

getProject(id: string): Promise<Project>{ 
const url = `${this.getProjects()}/${id}`; // can i call getProjects() method here 

return this.http.get(url) 
    .toPromise() 
    .then(response => response.json()) 
    .catch((error: string) => console.log(error)); 
} 
+0

Bitte sehen Sie sich den aktualisierten Code oben an. danke – Sohail

Antwort

0
getProjects(): Promise<Project>{ 
return this.getData() 
    .toPromise() 
    .then(response => response.json().projects) // <<< added .projects 
    .catch((error: string) => console.log(error)); 
} 
getProject(id: string): Promise<Project>{ 
    return this.getProjects() 
    .then(p => `${p}/${id}`) // no idea where `id` should come from 
    .then(url => { 
    return this.http.get(url) 
    .toPromise() 
    .then(response => response.json()) 
    .catch((error: string) => console.log(error)); 
    }) 
} 
+0

Nein, du kannst nicht, weil 'getProjects' ein' Versprechen' zurückgibt, kein Array. –

1

Verwenden Verfahren json zu konvertieren,

private extractData(res: any) { 
     if (res.status < 200 || res.status >= 300) { 
      throw new Error('Bad response sttus:' + res.status); 
     } 
     let serviceData = res.json().projects; 
     return serviceData || {}; 
    } 

getProjects(): Promise<Project>{ 
return this.getData() 
    .toPromise() 
    .map(this.extractData); 
} 
Verwandte Themen