Boa noite pessoal, então, a aplicação está indo bem, porém quando o usuário está na página de login, não aparece o texto "Please, login!", fica aparecendo o "(Logout)". Não sei o que pode estar acontecendo.
Meu header.component.html
<header class="fixed-top">
<nav class="navbar navbar-light bg-white">
<a class="navbar-brand">HUGOPICTURES</a>
<div *ngIf="(user$ | async) as user; else login"><!--O pipe async serve para capturar direto no template a última emissão do observable-->
<i class="fa fa-user-circle"></i>
<a class="ml-2">{{ user.name }}</a>
<a class="ml-2" (click)="logout()">(Logout)</a>
</div>
<ng-template #login>
<span class="navbar-text">
Please, login!
</span>
</ng-template>
</nav>
</header>
Meu header.component.ts
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { Observable } from 'rxjs';
import { User } from '../user/user';
import { UserService } from './../user/user.service';
@Component({
selector: 'hp-header',
templateUrl: './header.component.html',
styleUrls: [ './header.component.css' ]
})
export class HeaderComponent {
user$: Observable<User>;
constructor(
private userService: UserService,
private router: Router) {
this.user$ = this.userService.getUser();
}
logout() {
this.userService.logout();
this.router.navigate(['']);
}
}
Meu user.service.ts
import { Injectable } from '@angular/core';
import jwt_decode from 'jwt-decode';
import { BehaviorSubject } from 'rxjs';
import { TokenService } from './../token/token.service';
import { User } from './user';
/** Serviço para armazenar o token com auxílio do TokenService e retornar o usuário logado*/
@Injectable({ providedIn: 'root' })
export class UserService {
/** O Behavior Subject vai pegar a informação do usuário e guardar até que alguém utilize a informação */
private userSubject = new BehaviorSubject<User>({id:0,name:'',email:''});
private userName!: string;
constructor(
private tokenService: TokenService) {
this.tokenService.hasToken() &&
this.decodeAndNotify();
}
setToken(token: string) {
this.tokenService.setToken(token);
this.decodeAndNotify();
}
getUser() {
return this.userSubject.asObservable();
}
private decodeAndNotify() {
const token = this.tokenService.getToken();
const user = jwt_decode(token) as User;
this.userName = user.name;
this.userSubject.next(user);
}
logout() {
this.tokenService.removeToken();
this.userSubject.next({id:0,name:'',email:''});
}
isLogged() {
return this.tokenService.hasToken();
}
getUserName() {
return this.userName;
}
}
Alguém pode me ajudar por favor?