Ich habe Probleme mit * ngIf zum Entfernen der Login/Logout in der Navbar. Wenn ich mich angemeldet habe, sollte der Logout-Link ausgeblendet sein. Bitte sehen Sie meine Einrichtung.Wert von LoginComponent zu RootComponent übergeben
app.component.ts
import { Component, OnInit } from '@angular/core';
import { UserService } from './user';
import { Router } from '@angular/router';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit{
title = 'app works!';
loginstatus: boolean = false;
constructor(private _userService: UserService, private _router: Router){}
onLogout(){
this._userService.logout();
this._router.navigate(['/login']);
}
ngOnInit(){
this.onLogout();
}
}
app.component.html
<ul class="navigation">
<li *ngIf="!loginstatus"><a routerLink="/login" routerLinkActive="active">Login</a></li>
<li *ngIf="loginstatus"><a (click)="onLogout()">Logout</a></li>
</ul>
<router-outlet></router-outlet>
login.component.ts
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder, Validators} from '@angular/forms';
import { UserService } from '../user.service';
@Component({
selector: 'login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit{
user = {
username: '',
password: ''
}
loginForm: FormGroup;
constructor(private _userService: UserService, private _formBuilder: FormBuilder){}
ngOnInit(){
this.loginForm = this._formBuilder.group({
username: ['', Validators.required],
password: ['', Validators.required]
});
}
onLogin(){
this._userService.postUserLogin(this.user)
.subscribe(token => {
console.log(localStorage.getItem('currentUser'));
})
err => console.log(err);
}
}
Wie wir sehen, kann ich die Variable bin mit loginstatus um festzustellen, ob der Benutzer angemeldet ist oder nicht. Jetzt ist meine Frage von der Login-Komponente, wie kann ich den Wert loginstatus ändern, um die Anmeldung von der Navbar zu verbergen?
kann ich fragen, welches Paket von rx sollte ich bei der Verwendung von BehaviorSubject importieren, ohne die gesamten rx wenn möglich zu importieren? –
vergiss ich schon. Sein 'rxjs/BehaviorSubject'. Vielen Dank! –