【发布时间】:2016-07-02 07:50:20
【问题描述】:
我遇到了最奇怪的问题。
我正在接收一个 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;
}
但是当我尝试使用 angular 访问 html 中的这些字段时:
<p>{{ _userData.login }}</p>
<p>{{ _userData.name }}</p>
我在控制台中遇到了一些令人讨厌的错误,例如:
Error: EXCEPTION: TypeError: l__userData21 is null in [{{ _userData.login }} in UserHomeComponent@8: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() 转换为但没有任何改变。)
@编辑: 另一个类,它工作的地方是:
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(),但仍然......
标签: javascript json typescript angular