我正在以角度2开发一个网络应用程序,我在尝试检查用户是否登录时遇到了一些问题。
要检查一下,我有一个" LoggedInStatus"服务和每个构造函数内部我检查它是否为假。
constructor(
private loggedStatus : LoggedInStatus,
) {
if (this.loggedStatus.loggedIn == false) {
console.log('Before redirection');
console.log('loggedIn: ' + this.loggedStatus.loggedIn);
this.router.navigate(['login']);
console.log('After redirection');
}
// ....
}
问题是我有重定向,似乎没有正确重定向。执行继续,并假设重定向到登录屏幕。
那是我的控制台日志:
Before redirection
this.loggedStatus.loggedIn: false
After redirection
我不知道自己做错了什么?有什么帮助吗?
谢谢, 费兰
答案 0 :(得分:-1)
很可能在return
调用后继续执行代码。
调用后只需添加this.router.navigate(['/login']);
console.log('After redirection');
return;
console.log('this IS dead code, we will never get here');
即可。
CachedPartial
答案 1 :(得分:-1)
最后我发现了问题。
在我的模板中,我正在检查用户对象中的用户类型,如果用户已注销,它将永远不会存在于我的 loggedStatus < / em>服务,这导致错误。
<button *ngIf="loggedStatus.user.UserType == 'Admin'">Action</button>
我使用名为 isAdmin 的变量解决了在组件上执行此检查的问题:
<强>组件强>
// Check if is admin
if (this.loggedStatus.loggedIn == true) {
this.isAdmin = this.loggedStatus.user.UserType == 'Admin' ? true : false;
}
<强>模板强>
<button *ngIf="isAdmin">Action</button>
谢谢!