以正确的方式禁用角度5输入字段

我有一个这样创建的FormGroup:

格式:FormGroup;
构造函数(私有_formBuilder:formBuilder){}
this.form=this.\u formBuilder.group({
名称:['',验证器。必需],
电子邮件:['',Validators.required,Validators.email]
});

当事件发生时,我想禁用这些输入,因此,在我添加的HTML中:

<输入class=“form control”placeholder=“Name”Name=“Name”formControlName=“Name”[(ngModel)]=“Name”autocomplete=“off”[禁用]=“isDisabled”必填项>
<输入class=“form control”placeholder=“Email”name=“Email”formControlName=“Email”[(ngModel)]=“Email”Email=“true”autocomplete=“off”[disabled]=“isDisabled”必填项>

其中,isDisabled是一个变量,当所述事件发生时,我切换到true

正如你所能想象的,我得到的信息是:

看起来您正在将disabled属性用于被动表单
指令。如果将“禁用”设置为true
在组件类中设置此控件时,实际上会在DOM中为
你我们建议使用此方法来避免“检查后更改”错误

示例:
表单=新表单组({
第一个:newformcontrol({value:'Nancy',disabled:true},Validators.required),
最后:新FormControl('Drew',Validators.required)
});

因此,在这个警告显示的示例中,经过一点搜索,我发现我应该声明我的控件,如下所示:

名称:[{value:'',已禁用:this.isDisabled},验证器。必需]

问题是:当变量在true/false

在启用或禁用输入时,变量控制的正确方法是什么

我不想手动执行(例如:this.form.controls['name'].disable()),因为这似乎不是一种非常被动的方式,我必须在大量方法中调用它。可能不是一个好的做法

Thx

您可以将变量的赋值更改为setter方法,以便:

设置为禁用(值:布尔值){
此。_isDisabled=值;
如果(值){
this.form.controls['name'].disable();
}否则{
this.form.controls['name'].enable();
}
}

发表评论