【发布时间】:2020-05-10 22:20:36
【问题描述】:
我有一个简单的身份验证服务,仅用于测试,因为我正在学习设置 localStorage 值的 Angular
一般服务:
isAuthenticated = new Subject();
autoLogin = new Subject();
身份验证服务:
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 值并根据它更改其他值]
【问题讨论】:
标签: angular service rxjs local-storage subscription