У меня есть app.component.html
:
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class='container'>
<ul class="nav navbar-nav">
<li class='nav-item'>
<a class='nav-link' routerLink="/">Strona główna</a>
</li>
<li class='nav-item'>
<a class='nav-link' routerLink="/about">O nas</a>
</li>
<li class='nav-item' *ngIf='!user'>
<a class='nav-link' routerLink="/login">Zaloguj</a>
</li>
<li class='nav-item' *ngIf='!user'>
<a class='nav-link' routerLink="/register">Zarejestruj</a>
</li>
<li class='nav-item' *ngIf='user'>
<a class='nav-link' routerLink="/logout">Wyloguj</a>
</li>
</ul>
</div>
</nav>
<main>
<router-outlet></router-outlet>
</main>
Я пытаюсь показать кнопку /logout
, если пользователь вошел в систему, и скрыть ее в противном случае, и показать кнопки /login
и /register
, если пользователь не вошел в систему.
Вот моя логика входа в систему:
import {Component} from '@angular/core';
import {AuthService} from '../core/auth.service';
import {Router, Params} from '@angular/router';
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
@Component({
selector: 'page-login',
templateUrl: 'login.component.html',
styleUrls: ['login.scss']
})
export class LoginComponent {
loginForm: FormGroup;
errorMessage: string = '';
constructor(
public authService: AuthService,
private router: Router,
private fb: FormBuilder
) {
this.createForm();
}
createForm() {
this.loginForm = this.fb.group({
email: ['', Validators.required],
password: ['', Validators.required]
});
}
tryFacebookLogin() {
this.authService.doFacebookLogin()
.then(res => {
this.router.navigate(['/user']);
});
}
tryTwitterLogin() {
this.authService.doTwitterLogin()
.then(res => {
this.router.navigate(['/user']);
});
}
tryGoogleLogin() {
this.authService.doGoogleLogin()
.then(res => {
this.router.navigate(['/user']);
});
}
tryLogin(value) {
this.authService.doLogin(value)
.then(res => {
this.router.navigate(['/user']);
}, err => {
console.log(err);
this.errorMessage = err.message;
});
}
}
Пример функции doLogin
:
doLogin(value){
return new Promise<any>((resolve, reject) => {
firebase.auth().signInWithEmailAndPassword(value.email, value.password)
.then(res => {
resolve(res);
}, err => reject(err))
})
}
Я новичок в Angular. Я работал в основном с Express до сих пор. Я думал установить что-то вроде переменной сеанса, чтобы сохранить, вошел ли пользователь в систему или нет. Как я могу сделать это в Angular?