从Angular2中的observable访问对象的字段

时间:2017-02-01 22:48:09

标签: angular firebase observable

我正在尝试使用observable从数据库中提取对象。检索对象并将其放入变量后,我只能将整个对象放入模板中,一旦我尝试访问对象的任何特定字段,我就会收到错误。

这是我的服务,它有一个函数返回一个具有我想要的类型的observable。它基本上在数据库中查找并返回其URL等于我的URL变量的Item对象列表:

  getItemByUrl(url : string):Observable<Item[]>{
    return this.angularFire.database.list('items',{query:{
        orderByChild: 'url',
        equalTo: url}
    })

现在,在我的主要组件中,我使用此函数获取列表,然后将列表的第一项放入我自己的项目对象中,因此我可以在我自己的程序中使用它:

ngOnInit(){


   this.itemService.getItemsByUrl(this.url)
    .subscribe(res => this.item = res[0])
}

现在我将项目传递给模板:

{{item | json}}

一切都很好,我看到整个对象。但是一旦我尝试访问{{item.name}}等项目中的字段,我就会收到错误:

Cannot read property 'name' of undefined

任何想法为什么?

1 个答案:

答案 0 :(得分:0)

我终于找到了问题。正如jonrsharpe所提到的,显然你从观察者得到的价值只是一个Json。所以我必须创建一个获取json并从中创建新Item的函数。然后我可以使用Item对象并引用它的属性。这是我使用的功能:

 static fromJson({$key, name,number}){

    return new Item($key, name,number)}