使用来自单独组件的按钮禁用表单

Posted

技术标签:

【中文标题】使用来自单独组件的按钮禁用表单【英文标题】:Disable a form using a button from a separate component 【发布时间】:2022-01-18 17:56:56 【问题描述】:

有人可以就如何实现以下目标提供一些指导。

我有 2 个组件。组件 1 有一个带有多个文本表单字段的剑道表单。 在组件 2 中,我有一个按钮,单击它应该禁用整个表单 组件 1。

component-1.html

<form [disabled]="isDisabled">
  <kendo-textbox
    formControlName="name">
  </kendo-textbox>

  <kendo-textbox
    formControlName="surname">
  </kendo-textbox>

  <kendo-textbox
    formControlName="city">
  </kendo-textbox>
</form>

component-2.html

<button kendoButton [primary]="true" [disabled]="isDisabled" (click)="handleClick()">Try Me</button>

component-2.ts

在我的类中,我声明并初始化了一个名为 isDisabled 的变量并将其设置为 false。 然后在 handleClick 函数中,我正在更新 isDisabled 变量并将值设置为 true。

public isDisabled: boolean = false;

handleClick()
  this.isDisabled = true;

有人可以就我做错了什么或我缺少什么提供一些见解吗?

【问题讨论】:

这些组件有什么关系?查看组件之间的通信选项:angular.io/guide/component-interaction 【参考方案1】:

你应该考虑组件的状态,所以。

    在控制器中,是否应该创建一个具有组件状态的变量,例如:

public buttonState:boolean=false;

public formState:boolean=false;
    您是否应该理解事件以单独更改此状态,例如:

一个。在视图中:

&lt;button (click)="activeForm()"&gt; Active form &lt;/button&gt;

b.在控制器中:

activeForm()
    this.formState = true;

    您是否验证表单是否显示或隐藏,例如:

 <div *ngIf="formState">
     <form></form>
   </div>

这种方式适用于任何认为您需要处理程序的人。

【讨论】:

以上是关于使用来自单独组件的按钮禁用表单的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用表单上除按钮之外的所有控件?

如果同级组件中的表单无效,则禁用另一个组件的按钮

Formik,多步表单制作按钮禁用

如何在另一个组件中使用来自组件的表单

如何在单独的 html 页面上显示来自提交表单的计算值? [复制]

来自 FormGroup 的禁用控件(表单自定义表单控件的一部分)被父级中的 .getRawValue() 排除