Mein Problem ist folgendes zu verstecken:anhand beobachtbarer Navbar in Angular 2
Ich habe ein navbar in meinem app.component
und ich möchte, dass zum Beispiel verstecken vor dem jemand mit ngIf
, indem Sie einfach eine boolean Variable auf true angemeldet .
app.component.html:
<navbar *ngIf="_userLoggedIn === true" ></navbar>
<router-outlet></router-outlet>
Nachdem durch Web-Suche und Lesen durch Tonnen von Fragen hier denke ich, sollte dies mit Observable erfolgen. Aber ich kann nicht herausfinden, wie man sie auf eine gute Weise benutzt. Meine Idee war, ein Observable in einem globalen Service zu verwenden, um eine Variable zu teilen, so dass child component
auf diese Variable zugreifen und bearbeiten kann und die app.component
diese Variable abonnieren kann, um _userLoggedIn
zu ändern (true), wenn diese Observable auf true gesetzt ist.
ich mit login.component
mit der angular2 Router so seine im
<router-outlet>
angezeigt
{
path: '/login',
name: 'Login',
component: LoginComponent,
useAsDefault: true
},
In dieser Komponente möchte ich nach successed Login diese Variable auf true setzen. So ändert sich in app.component
und die Navbar wird angezeigt. Wenn Sie weiteren Code benötigen, sagen Sie es mir einfach.
Wäre toll, wenn jemand von mir mir bei meinem Problem helfen oder eine alternative Lösung für mein Problem bekommen könnte.
Es hat eine Weile gedauert, das zu verstehen, weil ich relativ neu zu angular2 bin, aber danach hat es ziemlich gut für mich funktioniert. Vielen Dank @lexith für Ihre schnelle und gute Antwort. Du hast mir sehr geholfen! – marvstar
Gern geschehen. Fyi: Sie sollten dies jedoch als Problemumgehung sehen. der router bekommt immer mehr liebe aus dem ng-team und wird es in zukunft erleichtern. Ein Kollege von mir hat mir gerade gesagt, dass er für dieses Szenario eine One-Liner-Lösung gefunden hat, indem er den Router abonniert hat, aber ich hatte noch nicht die Zeit, mich darum zu kümmern. – lexith
Danke für diese Info. Wir werden sehen, wie wir damit umgehen sollen, wenn Angular2 endgültig ist. Aber es wäre großartig, wenn Sie mir mitteilen könnten, ob es einen besseren oder vielleicht einfacheren Weg gibt, dies zu tun. – marvstar