如何通过比较条件禁用按钮?现有代码无法生效求助
如何根据条件动态禁用按钮?
我懂你想实现的效果——当candidature.statusCandidature.libelle等于'En cours'时禁用按钮,你当前的写法之所以不生效,是因为用了插值表达式绑定disabled属性,这在Angular里不是正确的姿势。
问题出在哪?
你写的<button disabled="{{条件}}">会把表达式结果转成字符串:
- 当条件为
true时,按钮会变成<button disabled="true">,这时候按钮确实会被禁用; - 但当条件为
false时,会变成<button disabled="false">——而HTML里只要disabled属性存在,不管它的值是什么,按钮都会处于禁用状态,这就导致你的按钮永远无法启用。
正确的解决方案
在Angular(2+)里,要动态控制属性,得用方括号属性绑定语法,直接绑定布尔值:
<button type="button" [disabled]="candidature.statusCandidature.libelle === 'En cours'">edit</button>
这个写法会根据绑定的布尔值来决定是否添加disabled属性:条件为true时添加属性(禁用按钮),条件为false时移除属性(启用按钮),完美符合你的需求。
额外的注意事项
- 确保
candidature和statusCandidature不是undefined或null,否则可能会触发错误。可以用可选链操作符来避免这种情况:<button type="button" [disabled]="candidature?.statusCandidature?.libelle === 'En cours'">edit</button> - 仔细检查
libelle的字符串值,确保和'En cours'完全匹配(包括大小写、空格,字符串匹配是严格的)。
内容的提问来源于stack exchange,提问作者user3529601




