2016-07-20 117 views
2

我將一些API調用的值顯示爲一個ngFor指令。我試圖將數據轉換爲數組。這是我從服務器獲取:如何將[對象對象]轉換爲數組?

Data from the server

我訂閱的數據是這樣的:

onVideoClick(video_id){ 
this._dashboardService.getVideoData(video_id) 
    .subscribe(videoData=> { 
     if (videoData.ok) { 
     console.log(videoData.json()); 
     this.videoData= videoData.json(); 
     } else { 
     console.log('pas de données vidéos'); 
     } 
    }); 

}

我顯示我的數據是這樣的:

<tr> 
    <th *ngFor="let vD of videoData">{{vD.attr_libelle}}</th> 
</tr> 

如何將此對象轉換爲數組?

+4

請將JSON添加爲文本,而不是屏幕截圖。 – str

+0

您需要指定想要轉換的對象。 – dfsq

回答

1

您可以爲此實現自定義管道。下面是從參賽對象創建一個數組的樣本之一:

@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; 
    } 
} 

,並使用它像:

<span *ngFor="#entry of content">   
    Key: {{entry.key}}, value: {{entry.value}} 
</span> 

不要忘了管道添加到組件的pipes屬性,你想要使用它。

+0

如何自定義此管道來將複雜對象(如對象)解析爲對象中的對象? –

+0

你期望輸出對象有哪些結構? –

0

我會使用庫Lodash進行此轉換。

onVideoClick(video_id) { 
    this._dashboardService.getVideoData(video_id) 
     .subscribe(videoData => { 
      if (videoData.ok) { 
       console.log(videoData.json()); 
       this.videoData = _.values(videoData.json()); 
      } else { 
       console.log('pas de données vidéos'); 
      } 
     }); 
} 

對於文檔看here