javascript - 如何在角度 5 中动态生成 *ngxPermissionsOnly?
问题描述
我已经动态创建了一个菜单,需要根据权限显示,但 *ngxPermissionsOnly 不起作用。请提出我做错了什么。
this.sidebarnavItems = [{
path: '', title: 'User Managment', icon: 'icon-Double-Circle', class: 'has-arrow', label: '', labelClass: '', extralink: false, permission:'',
submenu: [
{ path: '/user/vuser', title: 'User', icon: '', class: '', label: '', labelClass: '', extralink: false, submenu: [] ,permission:''},
{ path: '/user/vstudent', title: 'Student', icon: '', class: '', label: '', labelClass: '', extralink: false, submenu: [] ,permission:"'5','6','7','8'"},
{ path: '/user/vfaculty', title: 'Faculty', icon: '', class: '', label: '', labelClass: '', extralink: false, submenu: [] ,permission:''},
]
}]
<html>
<ul class="collapse" *ngIf="sidebarnavItem.submenu.length > 0" [ngClass]="{'in' : showMenu === sidebarnavItem.title }">
<li *ngFor="let sidebarnavSubItem of sidebarnavItem.submenu" [class.active]="showSubMenu === sidebarnavSubItem.title" [routerLinkActive]="sidebarnavSubItem.submenu.length > 0 ? '' : 'active'" >
<span *ngxPermissionsOnly = "[sidebarnavSubItem.permission]">
<a [routerLink]="sidebarnavSubItem.submenu.length > 0 ? null : [sidebarnavSubItem.path]" [routerLinkActive]="sidebarnavSubItem.submenu.length > 0 ? '' : 'router-link-active'" [ngClass]="[sidebarnavSubItem.class]" *ngIf="!sidebarnavSubItem.extralink;" (click)="addActiveClass(sidebarnavSubItem.title)" >
<i [ngClass]="[sidebarnavSubItem.icon]" ></i>
{{sidebarnavSubItem.title}}
</a>
</span>
</li>
</ul>
</html>
解决方案
您的权限输入格式以及如何将其绑定到ngxPermissionsOnly
指令存在问题。将您的更新sidebarnavItems
为:
this.sidebarnavItems = [{
path: '', title: 'User Managment', icon: 'icon-Double-Circle', class: 'has-arrow', label: '', labelClass: '', extralink: false, permission:'',
submenu: [
{ path: '/user/vuser', title: 'User', icon: '', class: '', label: '', labelClass: '', extralink: false, submenu: [] ,permission:[]},
{ path: '/user/vstudent', title: 'Student', icon: '', class: '', label: '', labelClass: '', extralink: false, submenu: [] ,permission:['5','6','7','8']},
{ path: '/user/vfaculty', title: 'Faculty', icon: '', class: '', label: '', labelClass: '', extralink: false, submenu: [] ,permission:[]},
]
}];
然后将您的视图代码更新为:
<ul class="collapse" *ngIf="sidebarnavItem.submenu.length > 0" [ngClass]="{'in' : showMenu === sidebarnavItem.title }">
<li *ngFor="let sidebarnavSubItem of sidebarnavItem.submenu" [class.active]="showSubMenu === sidebarnavSubItem.title" [routerLinkActive]="sidebarnavSubItem.submenu.length > 0 ? '' : 'active'" >
<span *ngxPermissionsOnly = "sidebarnavSubItem.permission">
<a [routerLink]="sidebarnavSubItem.submenu.length > 0 ? null : [sidebarnavSubItem.path]" [routerLinkActive]="sidebarnavSubItem.submenu.length > 0 ? '' : 'router-link-active'"
[ngClass]="[sidebarnavSubItem.class]" *ngIf="!sidebarnavSubItem.extralink;" (click)="addActiveClass(sidebarnavSubItem.title)" >
<i [ngClass]="[sidebarnavSubItem.icon]" ></i>
{{sidebarnavSubItem.title}}
</a>
</span>
</li>
</ul>
所以,在这里我刚刚更新*ngxPermissionsOnly = "sidebarnavSubItem.permission"
了权限属性现在是 sidebarnavItems 对象中的数组。
Plunker Demo 进行验证。在这里检查 roles.component.ts
推荐阅读
- javascript - 我如何从reactjs中的可用项目列表中过滤选中的项目
- google-apps-script - 从 API 编辑时,GAS“编辑时”触发器未运行
- javascript - 如何用完全匹配的表达式替换文件中的所有正则表达式?
- c# - 如何为三种几乎相同的方法制作单独的方法
- wolfram-mathematica - 不同 Modelica 编译器/模拟器之间的比较
- c++ - 根据线性顺序使用最接近的值将数字裁剪到另一种类型的数值限制
- youtube - YouTube 数据 API 不会返回埃及和也门地区最受欢迎的视频列表
- postgresql - 带有左连接的 Postgresql @@ 查询面临错误
- docker - Docker 登录到自定义 Docker 注册表失败
- dialog - 带有斜角按钮的 GMS 3.x 中的错误?