【问题标题】:Disable button in angular with two conditions?在两个条件下禁用角度按钮?
【发布时间】:2017-09-17 23:06:18
【问题描述】:

这在角度上可行吗?

<button type="submit" [disabled]="!validate && !SAForm.valid">Add</button>

我希望如果两个条件都为真,它们将启用按钮。

我已经尝试过上面的代码,但它没有按预期工作。

【问题讨论】:

  • 这篇文章已经好几年没发了,没想到会这么受欢迎。我不再使用 angular,但我正在使用 laravel 8 、 vue 3 、顺风和惯性。那时我只是一个初级网络开发人员,看到这个问题,给我起鸡皮疙瘩,编码可能有多差。感谢您在下面的所有回答,我真的很抱歉可能英语不好

标签: html angular typescript


【解决方案1】:

听起来你需要一个 OR:

<button type="submit" [disabled]="!validate || !SAForm.valid">Add</button>

如果未验证或不是 SAForm.valid,这将禁用按钮。

【讨论】:

    【解决方案2】:

    除了其他答案,我想指出,这种推理也被称为De Morgan's law。它实际上更多的是关于数学而不是编程,但它是如此基础,以至于每个程序员都应该了解它。

    你的问题是这样开始的:

    enabled  = A and B
    disabled = not ( A and B )
    

    到目前为止一切都很好,但您更进一步并试图移除大括号。 这有点棘手,因为您必须将 and/&amp;&amp; 替换为 or/||

    not ( A and B ) = not(A) OR not(B)
    

    或者用更数学的表示法:

    每当我简化条件或处理概率时,我始终牢记这条定律。

    【讨论】:

    • 太棒了。这是拥有更多数学知识的好处之一,你知道这种非常适用于编程的东西。
    • @The.Wolfgang.Grimmer 实际上,虽然分配性、结合性和交换性以加法和乘法而闻名(例如 (a+b)*c = ac+bc ),但没有足够的程序员知道“布尔代数”中有类似的定律.最重要的是,这些规则对于定义并、交、补规则的“集合代数”也很有用,这些规则是学习关系数据库(和 SQL)的基础。对于那些研究数字电子学的人来说,他们可能不得不使用它来将 AND/OR/NOT 逻辑重新建模为 NAND 门。这一切都是关于“德摩根”的一次又一次。
    【解决方案3】:

    在component.ts中声明一个变量并将其初始化为某个值

     buttonDisabled: boolean;
    
      ngOnInit() {
        this.buttonDisabled = false;
      }
    

    现在在 .html 或模板中,您可以输入以下代码:

    <button disabled="{{buttonDisabled}}"> Click Me </button>
    

    现在您可以通过更改buttonDisabled 变量的值来启用/禁用按钮。

    【讨论】:

    • 我会使用 ngOnInit 而不是构造函数。
    【解决方案4】:

    在角度 2 中这可能吗?

    是的,有可能。

    如果两个条件都为真,他们会启用按钮吗?

    不,如果它们为真,那么按钮将被禁用。 disabled="true".

    我尝试了上面的代码,但效果不佳

    你期待什么?当 valid 为 false 并且角度 formGroupSAForm 无效时,该按钮将被禁用。

    这里也有一个建议,请不要将按钮类型的按钮设置为提交,因为这可能会导致整个表单提交,您需要使用invalidate 并收听(ngSubmit)

    【讨论】:

    • 我希望如果他们都是真的他们会启用按钮
    • 正确,如果valid为真且fromGroup也有效,则该按钮将被启用。
    • 您可以尝试其他答案,或者发布 html 和 ts 文件,以便我们更好地了解 valiad 变量是什么
    • 以及按钮中的验证代码是什么
    • 我不明白这个问题。请给我解释一下。
    【解决方案5】:

    我使用三元运算符,但比较form.valid 是否为真。 乙:

    <button mat-button color="primary" [disabled]="((formUser.valid==true) && (formColaborador.valid==true))? false:true" (click)="addClick()">Crear</button>
    

    【讨论】:

      【解决方案6】:

      可以使用三元运算符,如下所示。[disabled] 内部要求其操作为 true 或 false。

      <button type="button" 
        [disabled]="(testVariable1 != 0 || testVariable2!=0)? true:false"
        mat-button>Button</button>
      

      【讨论】:

      • 三元返回条件给出的布尔值?
      猜你喜欢
      • 2021-08-31
      • 1970-01-01
      • 2014-01-22
      • 2014-10-14
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2017-12-14
      相关资源
      最近更新 更多