【问题标题】:Is there a way to subscribe to a button's enabled state?有没有办法订阅按钮的启用状态?
【发布时间】:2019-11-08 19:44:56
【问题描述】:

我有一个模板驱动的 Angular 表单,该表单有一个由外部因素修改的提交按钮,并且只有在页面及其数据加载后满足这些因素时才启用。

我希望能够准确地知道按钮何时启用(并且页面已正确加载),以便我可以记录页面初始化和页面完全加载之间的持续时间。

我认为这个属性可能是由 FormGroup 对象的 valueChanges 可观察对象公开的,但是 valueChanges 只包含与在 FormGroup 中找到的 FormControls 相关的信息。没有关于提交按钮的信息。

有没有其他方法可以做到这一点?

【问题讨论】:

  • 即使您有不同类型的按钮,启用状态也不完全是控件的“值”。我不认为你可以直接做到这一点。运行那些你可能截获的“外部因素”的代码还有什么其他的吗?

标签: angular


【解决方案1】:

正如我在您的另一篇文章(!)中所说,您可以像这样使用双向绑定:

<button [disabled]="isDisabled"></button>

在你的 ts 文件中:

isDisabled: bool = false;
  • 不必在 ts 组件中为 'isDisabled' 变量设置值,但您可以在发生更改时从该变量中获取它的状态。

【讨论】:

  • 这并不能准确地告诉 OP 按钮何时启用。它只告诉按钮是否在任何一个时间点被启用。
  • @JoãoMendes 你可以很容易地观察到这个变量!
  • 如果您的意思是“获取变量的值”中的观察,那么是的,您可以。如果您的意思是“订阅在变量更改时输出新值的反应性可观察对象”中的观察,我想询问示例代码。 :)
  • @IliaAfzali 感谢您的回答,但我认为这在这种情况下行不通。我已经将 disabled 属性绑定到方法的返回值。 &lt;button [disabled]="!canStartSession()"&gt;Submit&lt;/button&gt;。你的解决方案还能用吗?
  • @JoãoMendes 您对我如何确定按钮何时被禁用有任何见解吗?我仍然坚持这一点
猜你喜欢
  • 2021-05-05
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 2021-06-12
  • 2021-12-29
  • 2018-01-09
相关资源
最近更新 更多