【问题标题】:How to disable all the fields in a template driven form in angular如何以角度禁用模板驱动表单中的所有字段
【发布时间】:2018-09-07 02:18:06
【问题描述】:

我在 Angular 5 中创建了一个模板驱动的表单

我想首先禁用整个表单,并且还希望在单击某个按钮后启用表单,因此我在表单标记中添加了一个禁用属性并将其值设置为 false 如下所示,(这没有'虽然不行):

<form #formName = "ngForm" [disabled]="true">
</form>

由于上述 disabled 属性不起作用,我将 disabled 属性更改为

[attr.disabled] = true

这也没用

现在我有了表单元素的引用 #formName,我在 TS 文件中使用它并尝试更改引用对象内的 disabled 属性值

这是我所做的:

@ViewChild('formName') formName;


this.formName.disabled = true; 

这也不起作用,我收到一条错误消息,说禁用无法更改,因为它只是一个吸气剂

我应该如何在模板驱动的表单上默认禁用整个表单?

提前致谢:)

【问题讨论】:

  • 使用fieldset标签包装表单并使用disabled属性作为&lt;fieldset disabled&gt;
  • 这行得通,但我可以稍后通过将变量绑定到字段集中的禁用属性来将禁用值更改为 false,像这样
  • 我还希望稍后在单击某个按钮时启用该表单,是否可以@Aravind
  • 你可以用那种方式,我也应该回答一下,因为它对你有帮助吗?

标签: angular typescript angular-forms


【解决方案1】:

正如评论中提到的,您可以将表单包装在 fieldset 标记内,并按如下方式实现:

<form>
    <fieldset [disabled]="fieldsetDisabled">
        <!-- YOUR FIELDS HERE -->
    </fieldset>
</form>

您可以通过切换局部变量和disabled/enabled 状态来更改控制器中的处理状态:

this.fieldsetDisabled = true;  // Disables the fieldset
this.fieldsetDisabled = false; // Enables the fieldset

【讨论】:

  • 这在 Angular 5 中不起作用。
    标签未关闭。即使我关闭它,它也不起作用。
  • 在 ng9 中尝试此操作,但由于某些奇怪的原因,它会禁用除 mat-select 之外的大多数控件。
  • 我遇到了与@sarora 评论相同的问题。它也不会禁用验证。如何关闭禁用 fielset 的验证?
  • 这适用于 Angular 13,具有正常的反应形式。任何输入、复选框和按钮等都被禁用,我将它用于每个字段的基于角色的访问+权限 (CRUD) 系统。有些表单需要在页面上完全禁用,而只有特定字段是可编辑的。例如,即使用户是 ADMIN,也只有指定的管理员可以编辑/更新某些字段
猜你喜欢
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
相关资源
最近更新 更多