2016-04-01 140 views
0
我使用Angular2

从JSON阵列价值观和我已经以这种方式获取的火力地堡,从一些数据:打印属性在Angular2

dataset: any; 
onGetData() { 
    this._dataService.getAllData() 
     .subscribe(
     data => this.dataset = JSON.stringify(data), 
     error => console.error(error) 
    ); 

,如果我打印dataset我得到这个JSON:

{"-KE8XuCI7Vsm1jKDJIGK":{"content":"aaa","title":"bbb"},"-KE8XvM268lWhXWKg6Rx":{"content":"cccc","title":"dddd"}} 

如何从此JSON数组中打印出仅由title值组成的列表?

我想有:BBB - dddd完整

回答

0

在你看来,你需要

<div *ngFor='#data of dataset'> 
    {{ data.title }} - 
</div> 
+0

它不起作用。我已经试过这样:http://stackoverflow.com/questions/36339173/cant-show-data-retrieved-from-firebase?noredirect = 1#comment60309480_36339173但我得到了那个错误。我也尝试添加一个管道MapToIterable,但它仍然没有工作 – splunk

+0

哦,那是因为数据集不是数组。你需要它是一个数组循环通过这样的数据 – Austin

+0

我在控制台中得到这个错误:错误:找不到不同的支持对象'{“-KE8XuCI7Vsm1jKDJIGK .... 我试着用数据集:对象[ ]而不是数据集:任何,但它给了我这一行的错误:data => this.dataset = JSON.stringify(data) – splunk

2

只能遍历使用ngFor数组。在你的情况下,你需要实现一个自定义管道来迭代对象的键。

类似的东西:

@Pipe({name: 'keyValues'}) 
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 dataset | keyValues">   
    Title: {{entry.value.title}} 
</span> 

看到这个问题的更多细节: