У меня есть простой сервис аутентификации только для тестирования, так как я учусь Angular, который устанавливает значение localStorage
GeneralService:
isAuthenticated = new Subject();
autoLogin = new Subject();
AuthenticationService:
if (response.message === 'Logged in') {
localStorage.setItem('isLoggedIn', '1');
this.generalS.isAuthenticated.next(true);
} else {
this.generalS.isAuthenticated.next(false);
}
компонент аутентификации
isAuthSub: Subscription;
// in the submit function ...
this.authS.login(userData);
this.isAuthSub = this.generalS.isAuthenticated.subscribe( (data) => {
if (data) {
console.log('Yes');
this.route.navigate(['recipes']);
} else {
console.log('No');
}
});
В консоли я получаю Yes
В компоненте приложения
const isLoggedIn = localStorage.getItem('isLoggedIn');
if (!isLoggedIn || isLoggedIn !== '1') {
this.generalS.autoLogin.next(false);
this.generalS.isAuthenticated.next(false);
} else {
console.log('loggenInValue: ' + isLoggedIn);
this.generalS.autoLogin.next(true);
this.generalS.isAuthenticated.next(true);
}
И я получаю это в консоли
loggenInValue: 1
Поэтому субъекты autoLogin и isAuthenticated должны содержать true
в качестве значения
Я слушаю это значение в компоненте заголовка, чтобы отобразить или скрыть ссылку login
, но это не так. ничего не регистрировать
В компоненте заголовка
authSub: Subscription;
isAuthenticated: boolean;
ngOnInit() {
this.authSub = this.generalS.isAuthenticated.subscribe( (data: boolean) => {
this.isAuthenticated = data;
console.log('authenticated: ' + data);
});
}
Я не получаю никаких журналов из этого раздела. Есть идеи по решению этой проблемы? [Я знаю, что я не должен проверять функцию автологина, как это, но только для тестирования, чтобы проверить значение localStorage и изменить другие значения в зависимости от него]