我有一個從數據庫返回數據的服務。 在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操作符的 –