我有我的“帐户”组件,根据用户是否登录显示不同的 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)
})
}