Я делаю простое приложение для входа в систему.У меня есть компонент navbar, шаблон представления которого я хочу обновить в зависимости от того, вошел ли пользователь в систему или нет.В классе обслуживания UserService у меня есть метод выхода из системы.Мой компонент navbar выглядит следующим образом:
export class NavbarComponent implements OnInit {
loginStatus: boolean;
constructor(private _userService: UserService) { }
ngOnInit() {
this._userService.loginStatus().subscribe((data)=>{
this.loginStatus = data;
console.log('You are logged in:'+this.loginStatus)
})
setTimeout(()=>{
this._userService.logout();
}, 10000)// it's just an example for calling logout
}
}
И UserService:
@Injectable()
export class UserService {
private _token: string = null;
set token(token) {
localStorage.setItem('token', token);
this._token = token;
this.loggedIn = true;
}
get token() {
if (this._token) {
return this._token;
}
return this._token = localStorage.getItem('token');
}
private loggedIn: boolean = true;
constructor(private _httpClient: HttpClient) { }
logout(){
console.log('out')
this._token = null;
this.loggedIn = false;
localStorage.removeItem('token');
localStorage.clear();
}
loginStatus(): Observable<boolean>{
let observable: Observable<boolean> = new Observable((observer) => {
observer.next(this.loggedIn);
})
return observable;
}
}
loginStatus () возвращает наблюдаемое, на которое я подписан в компоненте Navbar.Теперь проблема в том, что, когда я выхожу с помощью метода выхода из системы, я хочу, чтобы метод loginStatus () снова отправлял данные.Как я могу применить любое обнаружение изменений к свойству loggedIn, чтобы можно было наблюдать данные?Если вы знаете другой способ, вы можете предложить мне.Thankyou.