2017-09-28 18 views
1

私は、ストレージからいくつかのjsonをロードしており、その情報をページhtmlテンプレートに表示しようとしています。しかし、私がそうするとき、ページに入ると、私は情報が(まだ)利用可能でないことを意味する間違いを得る。イオン3保存タイミング

私はコンセプトを誤解しているかもしれませんが、非同期ストレージの代わりにイオンストレージを同期呼び出しすることは可能ですか?私は基本的に、プロファイルがデバイスに保存されているかどうかをチェックしたい場合は、そうでない場合は - >ログイン画面に戻ります。しかし、明らかにイオンストレージの呼び出しには時間がかかり、ページがロードされたときにがまだ解決されていません。です。

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 Storageに電話をかけて、ページを読み込んだり入力したりするにはどうすればよいですか?

答えて

0

これは、ユーザーをストレージから取得するのに少し時間がかかるからです。

* NG-IFせずにエラーを回避するために別の提案:

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); 
    }); 
} 
0

は概念を誤解しているかもしれないが、それはイオンストレージの代わりに、非同期1に 同期呼び出しを行うことができますか?

これは非同期操作ですが、同期の方法でこれを行うことはできません。 * ngIf =「ユーザー」が良いソリューションですを使用するには、あなたのソリューションは、あなたも

<div *ngIf="!user"> 
    //Load a spinner, or a loading bar 
    </div> 
のようなものを追加することができます いずれかの方法
関連する問題