我有最奇怪的問題。Typescript無法訪問JSON對象(Angular2)
我收到一個JSON對象
{"login":"admin","name":"Admin"}
而且我在做什麼的代碼是:
private _userData: User;
...
private getUserData() {
this._userInfoService.getUserInfo()
.subscribe(
data => {
this._userData = data.json(); // (using <User> data.json() changes nothing
},
err => alert(err)
);
}
如果用戶類型是
export interface User {
login: string;
name: string;
}
但是,當我m試圖訪問這些領域的HTML與角:
<p>{{ _userData.login }}</p>
<p>{{ _userData.name }}</p>
我得到一些討厭的錯誤控制檯,如: Error: EXCEPTION: TypeError: l__userData21 is null in [{{ _userData.login }} in [email protected]:7]
雖然我可以清楚地看到,當我在此對象上做的console.log: Object { login: "admin", name: "Admin" }
我做到了完全與其他課程一樣,它在那裏工作。什麼是更有趣的是,當我稍微更改代碼,如下所示:
private _name: string;
private _login: string;
...
private getUserData() {
this._userInfoService.getUserInfo()
.subscribe(
data => {
this._name = (<User> data.json()).name;
this._login = (<User> data.json()).login;
},
err => alert(err)
);
}
和看法:
<p>{{ _login }}</p>
<p>{{ _name }}</p>
然後,一切都完美的作品!我完全不知道發生了什麼(試着投data.json()來但這改變不了什麼。)
@Edit: 其他類,它的工作原理是:
export interface LoginData {
access_token: string;
token_type: string;
refresh_token: string;
expires_in: number;
scope: string;
}
private _loginData = <LoginData> JSON.parse(sessionStorage.getItem("loginData")); //tried this also with User, doesn't work
和視圖:
<p>access_token: {{ _loginData.access_token }}</p>
<p>token_type: {{ _loginData.token_type }}</p>
<p>refresh_token: {{ _loginData.refresh_token }}</p>
<p>expires_in: {{ _loginData.expires_in }}</p>
這個'.json()'函數來自哪裏?我知道你嘗試過'JSON.parse()',但仍然... –