You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过比较条件禁用按钮?现有代码无法生效求助

如何根据条件动态禁用按钮?

我懂你想实现的效果——当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时移除属性(启用按钮),完美符合你的需求。

额外的注意事项

  1. 确保candidaturestatusCandidature不是undefinednull,否则可能会触发错误。可以用可选链操作符来避免这种情况:
    <button type="button" [disabled]="candidature?.statusCandidature?.libelle === 'En cours'">edit</button>
    
  2. 仔细检查libelle的字符串值,确保和'En cours'完全匹配(包括大小写、空格,字符串匹配是严格的)。

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

火山引擎 最新活动