我正在从存储中加载一些json,并打算在页面html模板中显示信息。但是,当我这样做时,在输入页面时会出现错误,这意味着信息(还)是不可用的。
我可能误解了这个概念,但是是否可以对离子存储进行同步调用而不是异步调用?我基本上想检查配置文件是否存储在设备上,如果不是->推回登录屏幕。但是显然,对离子存储的调用太长了,并且在加载页面时还没有解析。
page.ts
private user:User;
constructor(private storage: Storage) {
storage.get('user').then(data => {
this.user = data;
});
}page.html
<ion-content padding>
<div>
<p>Welcome <b>{{user.name}}</b></p>
</div>
</ion-content>正如我所说的,这将给我一个错误,即user.name是未定义的。当使用ngif指令等待承诺被解析时,它可以工作。但我想我误解了这个概念。
<ion-content padding>
<div *ngIf="user">
<p>Welcome <b>{{user.name}}</b></p>
</div>
</ion-content>那么,在加载/输入页面时,如何调用Ionic存储并使数据可用呢?
发布于 2017-09-28 12:59:57
可能误解了这个概念,但是是否可以对离子存储进行同步调用而不是异步调用?
这是一个异步操作,我不认为您能以同步的方式完成这个操作。不管怎样,您的解决方案使用*ngIf="user"是一个很好的解决方案,您还可以添加以下内容
<div *ngIf="!user">
//Load a spinner, or a loading bar
</div>发布于 2017-09-28 12:52:17
这仅仅是因为需要一些时间才能让用户从存储中获得信息.
另一项建议是避免没有*ng的错误-如果:
private user:User = new User(); // Initialize the user property
constructor(private storage: Storage) {
storage.get('user').then(data => {
this.user = Object.assign(new User, data);
});
}https://stackoverflow.com/questions/46469604
复制相似问题