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

Primeng p-dropdown的optionDisabled属性失效,无法禁用下拉选项

问题解决:PrimeNG p-dropdown optionDisabled 未生效

你的问题核心是optionDisabled的逻辑搞反了:PrimeNG的optionDisabled属性规则是——当绑定的字段值为true时,对应选项才会被标记为禁用。你现在需要禁用IsActive=false的选项,当前绑定的optionDisabled="IsActive"只会禁用IsActive=true的选项,完全不符合需求。

给出两种可行解决方案:

方案一:调整数据字段(直观推荐)

把原数据中的IsActive改为语义更匹配的IsDisabled,值取反,直接绑定字段名即可:

组件代码

this.cities = [
    { label: 'India', value: 'IND', IsDisabled: true },
    { label: 'Rome', value: 'RM', IsDisabled: false },
    { label: 'London', value: 'LDN', IsDisabled: true },
    { label: 'Istanbul', value: 'IST', IsDisabled: false },
    { label: 'Paris', value: 'PRS', IsDisabled: true },
];

模板代码

<p-dropdown [options]="cities"  
            [(ngModel)]="selectedCity"  
            optionLabel="label" 
            optionDisabled="IsDisabled"></p-dropdown>

方案二:使用自定义判断函数(无需修改原数据)

如果不想改动原数据结构,可以给optionDisabled绑定一个返回布尔值的箭头函数,通过!item.IsActive反转判断逻辑:

模板代码

<p-dropdown [options]="cities"  
            [(ngModel)]="selectedCity"  
            optionLabel="label" 
            [optionDisabled]="(item) => !item.IsActive"></p-dropdown>

注:此写法需要PrimeNG 12及以上版本支持,若使用旧版本,建议优先选择方案一。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:15:03