我是IONIC的新手。我有一个简单的问题,我不能使用promisecript类的promise值。它返回对象,但我需要值。否则我的一个条件不能实现。任何人都可以指导我如何将这个承诺值用于typescript类?代码是
app.component.ts
import { TabsPage } from '../pages/tabs/tabs';
import {SocialActivitiesPage} from '../pages/social-activities/social-activities';
import { HomeTabsPage } from '../pages/home-tabs/home-tabs';
export class MyApp implements OnInit {
rootPage:any = TabsPage;
socialProfile:any = SocialActivitiesPage;
hometabs:any = HomeTabsPage;
@ViewChild('nav') nav:NavController;
constructor(platform: Platform,
statusBar: StatusBar,
splashScreen: SplashScreen,
public menuCtr:MenuController,
private storage: Storage,) {
}
token:Promise<any> = this.storage.get('token').then((val)=>{
return this.token = val;
}).catch(
(err)=>{
console.log(err);
}
)
ngOnInit(){
if(this.token!==null){
this.rootPage = HomeTabsPage;
}
}
ionViewDidLoad(){
console.log(this.token);
}
}
上面的代码是我的app.component.ts,我通过下面的
解决了我的令牌承诺token:Promise<any> = this.storage.get('token').then((val)=>{
return this.token = val;
}).catch(
(err)=>{
console.log(err);
}
)
并试图将一个条件纳入ngOnInit()
ngOnInit(){
if(this.token!==null){
this.rootPage = HomeTabsPage;
}
}
不幸的是,这种情况不起作用。我的令牌是否为null或不为null。这里this.token是一个对象,而不是任何值。但是,如果我从app.html调用此标记,它将返回为字符串值,而不是对象。我试图像这样将这个令牌称为app.html
{{token}}
显示字符串值。不幸的是,从typeScript类开始,它始终显示我的一个对象,其中有一些_zoneSymboleType
和_zoneSymboleValue
。在_zoneSymboleValue
中我可以看到我的价值。所以我的问题如何将this.token用作值,而不是作为我的typeScript条件中的对象。
非常感谢您的努力。
感谢
答案 0 :(得分:1)
这是异步的,因此响应到达需要一段时间,您可以通过在OnInit
中调用该函数来解决此问题:
ngOnInit() {
this.storage.get('token').then((val)=>{
if(val!==null){
this.rootPage = HomeTabsPage;
}
})
}
详细了解异步:How do I return the response from an Observable/http/async call in angular2?