angular - 在 Angular 中隐藏部分菜单(权限)
问题描述
我正在使用 Angular 构建仪表板。仪表板的用户是 1:管理员(允许在侧边栏中查看完整菜单)和 2:员工(仅允许在侧边栏中查看该菜单的一部分)。
我应该如何定义菜单项,以便它们可以根据定义的用户权限动态显示?
谢谢
解决方案
import { Directive, ElementRef, Input, OnChanges } from '@angular/core';
import { PermissionService } from '../services/web-api/permission.service';
@Directive({
selector: '[appAuthorizeAction]'
})
export class AuthorizeActionDirective implements OnChanges {
@Input('path') path: string;
@Input('permission') permission: string;
constructor(private el: ElementRef, private permissionService: PermissionService) {
}
ngOnChanges() {
const authResult = this.permissionService.isAuthorized(this.path, this.permission);
if (authResult !== true) {
this.el.nativeElement.remove();
}
}
}
您可以使用以下内容并在任何项目上实施:示例用法:
<button mat-button appAuthorizeAction [path]="'ADMIN_PANEL'" [permission]="'EXECUTE'">Click me!</button>
如果用户被授权执行执行操作,它将保留该按钮,否则它将删除它。
推荐阅读
- html - 任何适用的指令或 div 元素均未提供属性 ngClass
- kubernetes - 如何获取旧的 pod 名称并将其映射到 Kubernetes 中的当前名称
- c# - 实体框架,从组合框中选择的字符串到数据库
- android - Android SMS 客户端上 OG 标签图像显示不一致
- javascript - 通过 KEY 的最后几个字符访问 JSON
- ruby-on-rails - 如何处理列名('hash')与 Rails 冲突的旧数据库表?
- excel - Excel - 按组计算人数
- c# - 从 asp.net core api 项目中提取业务逻辑
- python - 获取 Smart Master 的 RGB 或其他颜色值
- python - 如何使用 tkinter“moveto”将图像移动到位置 x,y