2017-04-19 19 views
0

ユーザーがログインしてログインした後、次のページには名前が表示されません。彼が戻って再試行すると、それはその後、動作します。 COMPONENT ONページの最初の読み込み時に補間が機能しません

<ion-title>Your name is {{name}}</ion-title> 

:HTMLテンプレートに

name: string; 
    constructor(public navCtrl: NavController, public navParams: NavParams, private storage: Storage) { 
    this.storage.get('name').then((val) => {this.name= val;}); 
    } 
+0

「this.storage」にはいつ保存されますか?その部分を追加できますか?以前のログインページの –

+0

サイトが初めて読み込まれた場合を除いて、すべて正常に動作します。 – user33276346

答えて

0

私はあなたがstorage.set()一部のその後の外で次のページを推進していると思います。以来、私はあなたのコードにアクセスすることができないので、どのように行うべきかを示しています。

this.storage.set('name',"somename") 
.then((val) => { 
    console.log("Value is set to somename"); 
    this.navCtrl.push(NextPage); 
}); 

これは、ストレージに値を設定している前のページで行う必要があります。

この場合、値が設定されている場合にのみ次のページに移動することが保証されます。

0

ユーザーがログインしたとき、あなたはイベント(イオンイベント)公共、あなたのコンポーネントで、ちょうどを購読することができはあなたが定義したイベント。イベントが発生するたびに、あなたの財産を更新することができます。

初期の状態では、ストレージにデータが残っていないため、ストレージから取得した場合でも、アプリは機能しません。 COMPONENT ON

constructor(
    private events: Events, 
    private storage: Storage, 
    //... 
) { } 

login(/* params */) { 
    // after login successful, save name to storage 
    this.storage.set('name', JSON.stringify(name)) 
    .subscribe(() => { 
     this.events.publish('login:success'); 
    }); 
} 

name: string; 
constructor(public navCtrl: NavController, public navParams: NavParams, private storage: Storage, private events: Events) { 
    this.storage.get('name').then((val) => {this.name= val;}); 
    this.event.subscribe('login:success',() => { 
     this.storage.get('name').then((val) => {this.name= val;}); 
    }) 
    } 
} 
関連する問題