2016-07-07 7 views
1

Ich bin auf der Suche nach einem Ratschlag, was das beabsichtigte Design in Angular2 für eine eingeloggte vs.! LoggedIn-Ansicht ist.Angular2 Routing Design - Standard-Navigationskomponenten vs. Login

Wenn mein Benutzer angemeldet ist, möchte ich standardmäßig eine Navigations- und Menüleistenkomponente anzeigen - daher würde ich ihn außerhalb des Router-Ausgangs platzieren, der die aktuelle Routenansicht anzeigt.

Die Routen sind durch eine Strecke Wache geschützt, die auf eine Login-Seite umleitet, wenn der Benutzer nicht angemeldet ist.

Hier ist der Fang ist hart, ich offensichtlich nicht will, das Menü und die Navigation, wenn der Benutzer zu zeigen, noch nicht eingeloggt

Also was ist der beabsichtigte Entwurf für diese Situation? Muss ich 2 Router-Ausgänge verwenden, einen für eine eingeloggte vs-geloggte-Sicht und einen für die tatsächliche Route-Komponente?

Antwort

0

Da Sie ein Token für zukünftige Aufrufe an Ihr Back-End speichern, Sie können nur Ihren lokalen Storage-Service und was nicht, wenn der Benutzer zuvor auf der Grundlage der vorhandenen des Tokens oder was auch immer Logik Sie loggen benutzen. so etwas zu tun, wie folgt aus:

<header id="mysupersecretheader" *ngIf="loggedIn"></header> 

wenn das Ergebnis falsch ist, werden Sie diese auf dem Ausgangs html erhalten:

<!--template bindings={ 
    "ng-reflect-ng-if": "false" 
}--> 

, die nicht einmal aussetzen wird, was da sein sollte.

Da sich alles ständig ändert sollten Sie die Release Notes und die Dokumentation lesen, es hilft wirklich !!! Here is the template syntax section

+0

Danke! Anfangs funktionierte das nicht für mich aufgrund einiger CSS-Design-Probleme, aber am Ende entschied ich, dass sich die CSS ändern musste, da die ngIf in der Tat der beste Weg ist, mit dieser Situation umzugehen. Prost, Tom – TommyF

1

Aber dieser Ansatz wird abgebrochen, wenn Sie die Zurück-Taste des Browsers drücken. d. H. Sie gelangen auf die Anmeldeseite mit gültigem Login. und Sie erhalten die Navigationsleiste sichtbar.

+0

Sie haben Recht. Irgendeine Lösung dafür? – TommyF

+0

Ich verwende einen globalen Ereignisemitter, der Ereignisse "showNavBar" ausgibt, die sich in AuthGuard befinden. und es ist im Konstruktor der App-Komponente abonniert. – user1882613