如何重新加载角度构造函数

时间:2021-01-13 00:52:09

标签: angular ionic-framework

我有我的“帐户”组件,根据用户是否登录显示不同的 html 内容。如果用户已登录,页面会显示个人资料信息,否则会显示登录表单。 问题是,如果您未登录并登录,页面内容将更改为“个人资料视图”,但除非您重新加载页面,否则构造函数从后端获取的任何用户数据都不会出现在屏幕上,有什么办法可以改变吗?

我留下了部分代码

帐户组件

user:any

  constructor(public auth: AuthService, private router: Router, private alert: Ion_Alert) {
    if(this.auth.isLoggedIn){
      this.user = this.auth.getUserData().subscribe({
        next: ( data:any ) => {
          this.user = data.data.person
          console.log(this.user)
        },
        error: error => {
          this.alert.showAlert("Error!", error.message)
          console.error('There was an error!', error)
        }
      })
    } else {
      this.alert.showAlert('Error!', "You're not logged in or you haven't verified your mail")
    }
  }

帐户 HTML

<ion-content>
  <div *ngIf="this.auth.isLoggedIn">
      <h1 *ngIf="user.first_name">{{user.first_name}} {{user.last_name}}</h1>
          <h1 *ngIf="user.business_name">{{user.business_name}}</h1>
          <h3 *ngIf="user.documents_type.id === 1">DNI: {{user.dni}}</h3>
          <h3 *ngIf="user.documents_type.id === 2">NIT: {{user.nit}}</h3>
  </div>
  
  <app-sign-in *ngIf="!this.auth.isLoggedIn"></app-sign-in>
</ion-content>

登录 HTML

<ion-content>
    //Ionic sign in form
<ion-row>
          <ion-col>
            <ion-button type="submit" color="light" expand="block" (click)="this.auth.signIn(userEmail.value, userPassword.value)">Sign In</ion-button>
          </ion-col>
          <ion-col>
            <ion-button routerLink="/register" color="primary" expand="block">Sign Up</ion-button>
          </ion-col>
        </ion-row>
</ion-content>

认证服务的东西

getUserData() {
    return this.http.get(`${this.env.API_URL}/users/firebase/${JSON.parse(localStorage.getItem('user')).uid}`)
  }

signIn(email, password) {
    return this.auth.signInWithEmailAndPassword(email, password)
      .then((result) => {
        this.ngZone.run(() => {
          if(this.welcome_message === false) {this.alert.showAlert("Welcome!", "Nice to see u' again!")}
          this.router.navigate(['/tabs/home'])
        });
        this.setUserData(result.user);
      }).catch((error) => {
        console.dir(error)
        this.alert.showAlert("Error!", error.message)
      })
  }

0 个答案:

没有答案