clearvalidators无法在角度6表单控件中工作

时间:2018-11-02 13:32:54

标签: javascript angular forms typescript

我有两个如下所示的表单组名称。有时,一种形式没有显示给用户。当两个都显示时,我没有问题。我有一个按钮,该按钮在表单有效时可见。

 <div
        *ngIf="showPersonalInfo"
        class="personalInfo"
        formGroupName="personalInfo"
      > 

 <div
        *ngIf="showFamilyInfo"
        class="familyInfo"
        formGroupName="familyInfo"
      > 

 <button
        *ngIf="InfoForm.valid"
        class="submitButton"
</button>

然后我使用以下代码初始化表单。

this.InfoForm = this.formBuilder.group({
  personalInfo: this.getPersonalInfo(),
  familyInfo: this.getFamilyInfo(),
});

this.getFamilyInfo()中的代码会将showFamilyInfo设置为true或false,并且在两种情况下都将初始化表单,否则找不到我的html throws familyInfo。

我们的一项服务有时会查找成员资料并提取现有的家庭信息/个人信息,然后填充模型并将showPersonalInfo / showFamilyInfo设置为true。

当showFamilyInfo为false时,我的InfoForm.FamilyInfo表单控件显示为无效。为避免此错误,我正在使用以下代码清除验证器,但仍显示familyInfo表单控件状态无效。我的PersonalInfo仍然有效。

当showFamilyInfo为false时,如何忽略与FmilyInfo相关的所有内容,以便按钮可见。

this.InfoForm.get('familyInfo').clearValidators();
this.InfoForm.get('familyInfo').updateValueAndValidity();

1 个答案:

答案 0 :(得分:1)

我认为您需要先清除错误,然后才能更新有效期。在链接的帖子中,Julia P.的答案涵盖了如何清除错误。然后,您运行updateValueandValidity。 How can I manually set an Angular form field as invalid?