angular - 如何以 Angular 禁用模板驱动表单中的所有字段

标签 angular typescript angular-forms

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

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

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

由于上面的disabled属性不起作用,我把disabled属性改成了

[attr.disabled] = true

这也行不通

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

这是我所做的:

@ViewChild('formName') formName;


this.formName.disabled = true; 

这也没有用,我收到一条错误消息,说禁用不能更改,因为它只是一个 setter/getter

在模板驱动的表单中,我应该如何在默认情况下以 Angular 禁用整个表单?

提前致谢:)

最佳答案

如评论中所述,您可以将表单包装在 fieldset 标记中并按如下方式实现:

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

并且您可以通过在禁用/启用状态之间切换局部变量来更改 Controller 中的处理状态:

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

关于angular - 如何以 Angular 禁用模板驱动表单中的所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49533780/

相关文章:

javascript - angular2 在选择框中选择整个对象

angular - 如何在 Angular 2 中设置 ng-bootstrap 组件的样式

javascript - 没有将 “exportAs” 设置为 “ngForm” 的指令到 <form name=

javascript - Angular 禁用按钮和垫输入错误消息

angular - 确认 Angular 6 中的密码验证

javascript - Angular 应用程序启动时路由到不同的组件

javascript - RxJS - forkJoin 何时触发?

angularjs - 导入Highcharts和highcharts-more(AngularJS 1.5 + TypeScript + webpack)

angular - 错误 : Angular CLI v10. 1.0 及更高版本(没有 `tsconfig.base.json` )

javascript - 对给定初始值的对象数组进行排序,使其始终排在第一位