Ionic 3 按钮在用户登录后不显示,并且全局变量根据其条件进行更改



在我的app.component.ts中,我添加了包含所有页面的侧边菜单。对于登录/注册页面,我添加了以下脚本:

<button menuClose ion-item (click)="authenticate()" *ngIf="!isLoggedIn">
    <ion-icon name="log-in"></ion-icon> Login/Register
</button>
<button menuClose ion-item (click)="logout()" *ngIf="isLoggedIn">
    <ion-icon name="log-out"></ion-icon> Logout
</button>

如您所见,如果变量 isLoggedIn 为 false,则应显示login,否则将显示注销按钮。

当用户登录并在存储中设置了user_id,并且 isLoggedIn 更改为 true 时,不会显示注销按钮。

以下是登录脚本:

if (response && response.status === 'success') {
    console.log(response.response.user_id);
    this.globalVar.loggedIn=true;
    // localStorage.setItem('user_id', response.data.user_id)
    this.storage.set('user_id', response.response.user_id);
    this.storage.set('fname', response.response.fname);
    this.storage.set('lname', response.response.lname);
    this.storage.set('email', response.response.email);
    loading.dismiss();
    this.storage.get('user_id').then((data)=>{
      this.globalVar.user_id=data
    });
    this.storage.get('fname').then((data)=>{
      this.globalVar.fname=data
    });
    this.storage.get('lname').then((data)=>{
      this.globalVar.lname=data
    });
    this.storage.get('email').then((data)=>{
      this.globalVar.email=data
    });
    this.viewCtrl.dismiss();
    let dataToSend={
      'offer_id': this.offer_id,
      'offerSelected': this.offerSelected,
      'user_id': this.globalVar.user_id
    };
    if(this.offerSelected && this.offer_id!='')
    {
      this.navCtrl.push(OfferDetailsPage, {
        data: dataToSend
      })
    }
  }
    else if (response && response.status == 'failed') {
      this.message = response.message;
      loading.dismiss();
    }
    else
    {
      this.message = 'Server is currently unavailable'
      loading.dismiss();
    }
  }, (error) => {
    loading.dismiss();
    this.showAlert(error.message);
    console.log(error)
  })
}

我安慰了isLoggedIn,这是真的。

这是一些非常混乱的代码,据我所知,您没有引用正确的变量名称,或者您只是没有显示从社区获得任何帮助所需的所有代码。

您设置变量"this.globalVar.loggedIn=true;">

你的 if 语句正在查看一个名为 "isLoggedIn" 的变量

变量在哪里定义?这可能在您的控制器文件中,然后加载带有 if 语句的按钮的离子视图。

最新更新