【发布时间】:2019-10-08 12:32:50
【问题描述】:
我有以下要求不适用于我当前的代码。我需要根据用户角色隐藏或显示位于我的应用标题组件中的按钮。
用户角色来自在服务文件中调用的会话存储。
setStoreData() {
const data = JSON.parse(sessionStorage.getItem(`oidc.user:${environment.accessTokenApiUrl}:${environment.clientId}`));
return data;
}
然后我在 ngOnit 上的标头组件中使用该服务并将其分配给一个变量
ngOnInit() {
this.userRole = this._storeService.setStoreData().profile.role;
}
然后是启用或禁用我的标题按钮的功能
isDisabledCorporates(): boolean {
if (
this.userRole == 'HR Admin' ||
this.userRole == 'HR Recruiter' ||
this.userRole == 'HR Manager' ||
this.userRole == 'Candidate' ||
this.userRole == 'Operations administrator' ||
this.userRole == 'Internal Account Manager') {
return true;
} else {
return false;
}
}
isDisabledArchive(): boolean {
if ( this.userRole == 'HR Recruiter' ||
this.userRole == 'HR Manager' ||
this.userRole == 'Candidate' ||
this.userRole == 'Operations administrator' ||
this.userRole == 'Internal Account Manager') {
return true;
} else {
return false;
}
}
最后我的html代码如下
<nav *ngIf="userRole">
<div>
<div>
<button class="nav-link-btn" [routerLink]="['/corporate/dashboard']" *ngIf="isDisabledCorporates()"> Corporates </button>
<button class="nav-link-btn" [routerLink]="['/archive']" *ngIf="isDisabledArchive()"> Archive </button>
</div>
</div>
</nav>
问题是代码似乎没有禁用公司按钮,而我当前的用户是 HR Admin。任何想法为什么?
【问题讨论】:
-
尝试在 DOM 中的某处打印
userRole。也许这是一个案例问题或不正确的值? -
@RehbanKhatri 我安慰了它,它以“人力资源管理员”的身份出现
-
和下面提到的不一样。与旧代码有关的旧答案被标记为正确。评论前请仔细阅读。已标记。
标签: angular typescript