J'essaie d'implémenter un composant d'en-tête dynamique qui change en fonction du rôle de l'utilisateur.Angular 4 en-têtes dynamiques basés sur le type d'utilisateur
Voici mon composant d'en-tête
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {
currentUser:any;
constructor(
) {
this.currentUser = JSON.parse(localStorage.getItem('currentUser'));
}
ngOnInit() {
}
}
Ceci est mon modèle d'en-tête
<nav class="navbar navbar-default" >
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav navbar-right">
<li class="menu_item" *ngIf="!currentUser"><a [routerLink]="['/login']"> Login </a></li>
<li class="menu_item" *ngIf="currentUser"><a [routerLink]="['/signin']">Logout</a></li>
</ul>
</div>
</nav>
Mais le problème est
- après connecté, que le texte d'en-tête ne change pas (non changement connexion -> déconnexion)
- après la déconnexion, ce texte d'en-tête ne change pas (ne pas changer logout -> login)
- Mais cela change le texte de l'en-tête si je rafraîchis la page. Mais ne change pas automatiquement avec le changement d'itinéraire
Quelqu'un peut-il m'aider à ce sujet?
Qu'est-ce que ça ressemble l'objet utilisateur –
Vous définissez cela. currentUser avec la valeur de localStorage juste une fois. Probablement lorsque l'utilisateur se connecte/se déconnecte, vous modifiez la valeur dans le stockage mais le composant ne «relit» pas cette valeur. Vous pouvez utiliser un EventEmitter pour ce service ou un service partagé. –
Peut m'expliquer comment l'implémenter en utilisant un service partagé –