【发布时间】:2017-08-18 17:14:25
【问题描述】:
我无法在导航栏上选择性地显示链接。 根据谁登录(用户或管理员),我想更改在我的导航栏上显示的链接。
以下是用户/管理员注销的一个此类实例的代码。
在 navbar.component.html -
<li *ngIf="authService.userLoggedIn()== true && authService.adminLoggedIn() == false"
[routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}">
<a (click)="onUserLogoutClick()" href="#">Logout</a>
</li>
<li *ngIf="(authService.adminLoggedIn() == true) && (authService.userLoggedIn() == false)"
[routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}">
<a (click)="onAdminLogoutClick()" href="#">Logout</a>
</li>
authService.adminLoggedIn() 和 authService.userLoggedIn() 都返回 tokenNotExpired;
下面是navbar.component.ts -
中的相关代码 onUserLogoutClick() {
this.authService.userLogout();
this.flashMessage.show('You are now logged out', {cssClass: 'alert-success', timeout: 3000});
this.router.navigate(['/login']);
return false;
}
onAdminLogoutClick() {
this.authService.adminLogout();
this.flashMessage.show('Administrator now logged out', {cssClass: 'alert-success', timeout: 3000});
this.router.navigate(['/admin']);
return false;
}
authService.adminLogout() 和 authService.userLogout() 只是清除存储在本地存储中的令牌。
如果我犯的错误很愚蠢,我提前道歉。我是 Angular 的新手。
【问题讨论】:
-
修改你的帖子更有意义
-
你如何识别是管理员登录还是用户登录
-
您能否解释一下 authService.adminLoggedIn() 和 authService.userLoggedIn() 是否返回 tokenNotExpired 但您正在测试 boolean true?请问您是否更愿意将逻辑作为 JS 代码的一部分而不是在模板中?它似乎没有模板影响。
-
我的登录页面导航栏上有不同的管理员和用户登录组件。
-
@BenDadsetan,我参考了github.com/auth0/angular2-jwt 来了解 angular2-jwt 在检查身份验证以隐藏/显示元素和处理路由的部分中,他们还检查了 *ngIf 中的条件,我什至尝试不使用将其测试为布尔值,但仍然无法正常工作。链接 - github.com/auth0/…
标签: angular angular-ng-if