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

PrimeNg中已禁用的子MenuItem仍可展开,如何修复?

修复PrimeNg PanelMenu中禁用菜单项仍可展开的问题

PrimeNg的disabled属性默认只禁用菜单项的导航点击行为,不会自动阻止子菜单的展开/折叠操作,要解决这个问题可以通过拦截菜单切换事件来实现:

方法:利用onBeforeToggle事件拦截展开操作

  1. 在HTML模板中给p-panelMenu绑定onBeforeToggle事件:
<p-panelMenu [model]="items" [style]="{'width':'300px'}" (onBeforeToggle)="handleBeforeToggle($event)"></p-panelMenu>
  1. 在TypeScript中实现事件处理方法,判断菜单项是否禁用,若禁用则阻止切换:
import { MenuItemToggleEvent } from 'primeng/api';

// ...

this.items = [
  {
    label: 'File',
    icon: 'pi pi-fw pi-file',
    items: [
      {
        label: 'New',
        icon: 'pi pi-fw pi-plus',
        expanded: false,
        disabled: true,
        items: [
          {
            label: 'Bookmark',
            icon: 'pi pi-fw pi-bookmark',
          }
        ],
      },
      {
        label: 'Delete',
        icon: 'pi pi-fw pi-trash',
      },
    ],
  },
];

handleBeforeToggle(event: MenuItemToggleEvent) {
  // 若菜单项处于禁用状态,阻止展开/折叠动作
  if (event.item.disabled) {
    event.preventDefault();
  }
}

可选:添加CSS增强视觉反馈

为了让禁用菜单项的展开图标更直观,可以添加CSS禁用其点击事件并降低透明度:

.p-panelmenu .p-menuitem-disabled .p-panelmenu-header-icon {
  pointer-events: none;
  opacity: 0.5;
}

内容的提问来源于stack exchange,提问作者lk-granit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:35:02