我有一个从数据库返回数据的服务。 在OnInit我所说的服务,并将它传递的参数和返回的结果:angular 2如何访问模板中返回的json
this._route.params
.map(params => params['id'])
.subscribe((id) => {
this.title = id ? "Edit User" : "New User";
if (!id) {
return;
}
//console.log(id);
this._locationService.getLocation(id)
.subscribe(
location => this.location = location,
error => alert(error),
() => console.log("finished" )
);
});
,并在模板中我看到的结果,像这样:
Location - {{location | json}}
,结果我看到的是: 位置 - [{ “ID”: “1”, “名”: “shliz咖啡”, “地址”: “HEL ST 36,TA”, “LAT”: “32.060143”, “LNG”: “34.770557” }]
所有不错的权利? 很好,当我尝试: {{location.name}}
我得到这个错误:异常:类型错误:为什么我不能访问数据无法读取的不确定
属性“名称”?
我不知道是否以及如何将它连接,但是当我在构造日志this.location我得到了一个未定义而在OnInit我登录this.location我得到的对象。 任何人有任何想法是什么错?
所以只是为了测试,我初始化位置变量,像这样:
location:Location = {
name: 'some name',
address: 'some addredd',
lat: '45.74837',
lng: '32.98575'
};
和审判,仍然不能在模板中访问它。所以我评论了调用服务和数据库的oninit部分,然后我可以访问我的初始化值。
但因为的bizzare我登录在完成this.location订阅方法,它是存在的,而且我们知道在模板时,我使用JSON管道将其表现出来。
我迷路
在JSON再看看。为结果设置一个全局变量并在控制台中调用它('window ['test'] = location')或者设置一个断点来检查你设置的实际值。检查控制台中的'typeof test'。你应该明白为什么'location.name'永远不会被定义。另外请查看@micronyks的回答,Angular 2在异步操作返回之前尝试绑定未定义变量的属性时并未保持沉默。使用elvis操作符的 –