You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

angular-calendar 中如何按用户角色隐藏指定CalendarEventAction操作按钮

实现方法

你只需先在组件内维护当前用户的权限状态,再根据权限动态生成操作按钮数组即可,具体实现如下:

1. 定义权限判断标识

首先在组件类中新增管理员权限判断属性,在用户信息加载完成后完成赋值:

// 组件属性:标识当前用户是否为管理员
isAdmin: boolean = false;

// 示例:在用户信息初始化逻辑中赋值,可根据你项目实际的权限获取逻辑调整
ngOnInit(): void {
  // 假设currentUser是你项目中存储的当前登录用户全局信息
  this.isAdmin = this.currentUser?.role === 'administrator';
}

2. 动态构建操作按钮数组

不再写死actions数组的内容,先加入所有用户都可见的编辑按钮,再判断用户为管理员时追加删除按钮:

// 先初始化所有用户通用的操作按钮
actions: CalendarEventAction[] = [
  {
    label: '<i class="material-icons mat-icon">edit</i>',
    onClick: ({ event }: { event: CalendarEvent }): void => {
      this.editCalendarEvent(event);
    }
  }
];

// 权限判断:仅管理员加入删除按钮
if (this.isAdmin) {
  this.actions.push({
    label: '<i class="material-icons mat-icon">remove</i>',
    onClick: ({ event }: { event: CalendarEvent }): void => {
      this.removeCalendarEvent(event);
    }
  });
}

补充说明

  • 如果你的项目支持无刷新切换用户角色,需要在角色变更时重新执行上述构建actions数组的逻辑,同步更新按钮的展示状态
  • 前端仅做展示层的按钮隐藏,后端对应的删除日历事件接口必须额外加管理员权限校验,避免普通用户通过直接调用接口绕过前端限制执行删除操作

内容的提问来源于stack exchange,提问作者George Dascalu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:24:01