2016-07-20 87 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