角度2中的重定向似乎不会破坏执行

时间:2016-12-21 10:26:59

标签: angular

我正在以角度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

我不知道自己做错了什么?有什么帮助吗?

谢谢, 费兰

2 个答案:

答案 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>

谢谢!