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
相关产品推荐
相关产品推荐

