Ich versuche eine Navigationsleiste zu implementieren, die verschiedene Links basierend darauf anzeigt, ob ein Benutzer angemeldet ist oder nicht.Aufrufen der Komponentenaktualisierung in Angular 2
Ich verwende die angular2-jwt
-Bibliothek, die die tokenNotExpired()
-Funktion bereitstellt.
Ich habe 2 Routen, /home
und /login
. Ich habe eine Navbar-Komponente, die außerhalb der <router-outlet>
ist, was bedeutet, dass es nur einmal initialisiert wird und nicht jedes Mal, wenn sich die Route ändert.
Nach erfolgreicher Anmeldung rufe ich router.navigate(['/home])
auf. Sowohl das Home als auch das Login überprüfen, ob ein Benutzer in seinen jeweiligen ngOnInit()
Funktionen angemeldet ist. Die Home-Komponente kann somit den angemeldeten Benutzer erkennen.
Allerdings kann ich die Navbar nicht aktualisieren, da sie nicht über die Anmeldung informiert ist.
Könnte mir bitte jemand den richtigen Weg erklären, diese Änderungserkennung zu implementieren?
Danke.
Danke Sefa. Da ich die 'angular2-jwt' Bibliothek verwende, habe ich' userLoggedIn: bool = false; 'und die change Funktion durch eine Funktion ersetzt, die die Ausgabe von' tokenNotExpired() 'zurückgibt. –
Das funktioniert. Sie greifen jedoch direkt von der View aus auf die Servicevariable zu: '[hidden] ="! AuthService.userLoggedIn "'. Ist das wirklich der richtige Weg (denke ich nicht)? Sollten wir BehaviorSubject nicht verwenden und die Änderungen propagieren und über Navbar abonnieren? – Devner