我对angular2很新,我想访问一个承诺的结果但是失败了
这就是我试过的
在authservice
中token: string ;
constructor( private _http: Http, private _storage: Storage) {
this._storage.get('currentUser')
.then(res=> this.token = JSON.parse(res).token)
//WHEN I SET AN ARBITRARY VALUE IT RETURNS
eg:this.token="dsd";
//Also this logs a value
// .then(res=> console.log(JSON.parse(res).token))
}
在另一个组件中,我通过
访问令牌authtoken: string;
constructor( private _authservice: AuthService, public _loadingCtrl: LoadingController) {
this.authtoken = this._authservice.token;
}
in the view
{{authtoken}}
我在想什么
答案 0 :(得分:1)
在服务中试试这个:
getToken() {
return JSON.parse(this._storage.get('currentUser')).token;
}
然后在你的组件中:
this.authtoken = this._authservice.getToken();
如果存在异步问题,可能值得在视图中添加elvis-operator:
{{authtoken?}}
答案 1 :(得分:1)
当asynchronus函数调用完成时,您的第二个组件不知道。因此,您将获得null或未定义的值作为返回值。
我会建议这样的事情:
token: string ;
constructor( private _http: Http, private _storage: Storage) {
}
setCurrentUser(): Promise<void>{
if (this.token == undefined ||this.token == ""){ //Only sets the token if no user is signed in
return this._storage.get('currentUser').then(res=> this.token = JSON.parse(res).token)
}
return Promise.resolve();
//WHEN I SET AN ARBITRARY VALUE IT RETURNS
eg:this.token="dsd";
//Also this logs a value
// .then(res=> console.log(JSON.parse(res).token))
}
在你的其他组成部分中:
authtoken: string;
constructor( private _authservice: AuthService, public _loadingCtrl: LoadingController) {
}
ngOnInit(){
this._authservice.setCurrentUser().then(() => {
this.authtoken = this._authservice.token;
}
}
in the view
{{authtoken}}