Angular 2动态禁用FormControl

Angular 2动态禁用FormControl,angular,Angular,我有一个简单的表单组,有两个表单控件。最初,两种控制都需要验证 我在模板中还有一个按钮。单击按钮时,我想更改表单组的行为。也就是说,两个控件都需要被禁用&并且验证需要被删除 进口{ 组成部分 AfterViewInit, 视图儿童 }从“@angular/core”开始; 进口{ 造模工, FormGroup, 验证器 }从“@angular/forms”开始; @组成部分{ 选择器:“我的应用程序”, templateUrl:“./app.component.html”, stylecomp

我有一个简单的表单组,有两个表单控件。最初,两种控制都需要验证

我在模板中还有一个按钮。单击按钮时,我想更改表单组的行为。也就是说,两个控件都需要被禁用&并且验证需要被删除

进口{ 组成部分 AfterViewInit, 视图儿童 }从“@angular/core”开始; 进口{ 造模工, FormGroup, 验证器 }从“@angular/forms”开始; @组成部分{ 选择器:“我的应用程序”, templateUrl:“./app.component.html”, stylecomponent'.[.css:] } 导出类AppComponent{ 名称='6'; 表格:表格组; constructorprivate fb:FormBuilder{ 让username=this.fb.control.applynull[{ 值:“gannr”, 禁用:false },验证器。必填] 让password=this.fb.control.applynull[{ 值:“你好”, 禁用:false },验证器。必填]; this.form=this.fb.group{ 用户名:用户名, 密码:密码 }; } 改变行为{ 让username=this.fb.control.applynull[{ 值:'gannr disabled', 残疾人士:对 }]; 让password=this.fb.control.applynull[{ 值:“你好”, 残疾人士:对 }]; this.form=this.fb.group{ 用户名:用户名, 密码:密码 }; }
} 也许如果你使用了正确的变量和语法

  changeFormBehavior() {
    this.form.get('username').disable();
    this.form.get('password').disable();
    this.form.get('username').setValidators(null);
    this.form.get('password').setValidators(null);
 }

也许如果你使用了正确的变量和语法

  changeFormBehavior() {
    this.form.get('username').disable();
    this.form.get('password').disable();
    this.form.get('username').setValidators(null);
    this.form.get('password').setValidators(null);
 }

谢谢你的回答。为什么表单状态在删除验证后仍然无效?否。它不起作用。我还尝试通过调用clearValidators方法来清除验证。我看到了,让我找出为什么它在一秒钟内无效,因为它是空的。禁用控件会将它从表单的值中删除。删除this.form.updateValueAndValidity和this.form.get'password'。禁用,它将变为有效。Stackblitz:有没有什么解决办法可以让所有的formcontrol都被禁用,并且表单仍然有效?谢谢你的回答。为什么表单状态在删除验证后仍然无效?否。它不起作用。我还尝试通过调用clearValidators方法来清除验证。我看到了,让我找出为什么它在一秒钟内无效,因为它是空的。禁用控件会将它从表单的值中删除。删除this.form.updateValueAndValidity和this.form.get'password'。禁用,它将变为有效。Stackblitz:是否有任何解决方法可以禁用所有formcontrol并使表单仍然有效?我可以知道为什么您将答案取消标记为已解决?我可以知道为什么您将答案取消标记为已解决?