如何以角度方式禁用模板驱动表单中的所有字段

Har*_*ish 8 typescript angular angular-forms

我用角度5创建了一个模板驱动的表单

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

<form #formName = "ngForm" [disabled]="true">
</form>
Run Code Online (Sandbox Code Playgroud)

由于上面的禁用属性不起作用,我将禁用的属性更改为

[attr.disabled] = true
Run Code Online (Sandbox Code Playgroud)

这也行不通

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

这就是我所做的:

@ViewChild('formName') formName;


this.formName.disabled = true; 
Run Code Online (Sandbox Code Playgroud)

这也没有用,我得到一条错误消息说禁用无法更改,因为它只是一个吸气剂

默认情况下,如何在模板驱动表单的角度中禁用整个表单?

提前致谢 :)

Ara*_*ind 13

如评论中所述,您可以将表单包装在fieldset标记内并实现如下所示,

<form #formName = "ngForm" >
    <fieldset [disabled]="disabledValue">
</form>
Run Code Online (Sandbox Code Playgroud)

并且您可以通过使用局部变量在代码中更改它,并在禁用/启用状态之间切换为

this.disabledValue = true;
Run Code Online (Sandbox Code Playgroud)

  • 在 ng9 中尝试这个,它会由于某些奇怪的原因禁用除 mat-select 之外的大多数控件。 (3认同)