Angular 插值不';在第一次加载页面时不工作

Angular 插值不';在第一次加载页面时不工作,angular,promise,ionic2,interpolation,Angular,Promise,Ionic2,Interpolation,登录后,用户键入自己的姓名并单击登录,下一页将不显示姓名。如果他回去重试,它会在那时和之后工作 在HTML模板上: <ion-title>Your name is {{name}}</ion-title> 当用户登录时,您可以在组件中公开一个事件(离子事件),只需订阅您定义的事件即可。每当事件触发时,您都可以更新您的属性 你的应用程序无法运行,因为在早期状态下,存储不会持久保存任何数据,即使你从存储中获取数据,它也一文不值 constructor( privat

登录后,用户键入自己的姓名并单击登录,下一页将不显示姓名。如果他回去重试,它会在那时和之后工作

在HTML模板上:

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

当用户登录时,您可以在组件中公开一个事件(离子事件),只需订阅您定义的事件即可。每当事件触发时,您都可以更新您的属性

你的应用程序无法运行,因为在早期状态下,存储不会持久保存任何数据,即使你从存储中获取数据,它也一文不值

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) {
    this.storage.get('name').then((val) => {this.name= val;});
  }
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;});
    })
  }
}

我认为您正在将下一页推到
storage.set()
part之外。因为,我没有访问您的代码的权限,正在演示应该如何执行。我相信这会奏效:

this.storage.set('name',"somename")
 .then((val) => {
   console.log("Value is set to somename");
   this.navCtrl.push(NextPage);
 });
这将在上一页中完成,您将在该页中设置存储器中的值


在这种情况下,可以确保您仅在设置了该值时才导航到下一页。

该值何时存储在
this.storage
?您可以在上一个登录页面中添加该部分吗。我的意思是,除了第一次加载网站外,一切正常。