我正在try 基于用户权限构建菜单.下面是上述数组的简化示例:
this.model = [
{
label: "Admin",
items: [
{
label: "Users",
icon: "fas fa-list",
routerLink: ["/admin/users/"],
},
{
label: "Clients",
icon: "fas fa-list",
items: [
{
label: "List",
icon: "fas fa-list",
routerLink: ["/client/list"],
},
{
label: "Create",
icon: "fas fa-list",
routerLink: ["/client/create/"],
},
],
},
],
},
];
该数组负责在其各自的组件中生成菜单标记,如下所示:
<ul class="layout-menu">
<ng-container *ngFor="let item of model; let i = index;">
<li app-menuitem *ngIf="!item.separator" [item]="item" [index]="i" [root]="true"></li>
<li *ngIf="item.separator" class="menu-separator"></li>
</ng-container>
</ul>
现在,我在sessionStorage
中存储了一系列用户权限,作为访问的布尔值.我需要使用这些权限来添加或减少基于它们的菜单项目.
例如,如果"canCreateClients"为FALSE,则不应显示菜单的"/CLIENT/CREATE/"部分.
我大致了解如何使用三元操作符在JSON中应用条件值,但这是一个对象数组,由于下拉菜单项,它可以无限嵌套,因此它最终也会有嵌套操作符.
我可以通过在一个临时变量中创建整个数组,然后根据权限单独删除每个对象来解决这个问题.然而,这是非常不切实际的.
什么是解决这一问题的好办法?