我正在尝试使用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
任何想法为什么?
答案 0 :(得分:0)
我终于找到了问题。正如jonrsharpe所提到的,显然你从观察者得到的价值只是一个Json。所以我必须创建一个获取json并从中创建新Item的函数。然后我可以使用Item对象并引用它的属性。这是我使用的功能:
static fromJson({$key, name,number}){
return new Item($key, name,number)}