我有两个如下所示的表单组名称。有时,一种形式没有显示给用户。当两个都显示时,我没有问题。我有一个按钮,该按钮在表单有效时可见。
<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();
答案 0 :(得分:1)
我认为您需要先清除错误,然后才能更新有效期。在链接的帖子中,Julia P.的答案涵盖了如何清除错误。然后,您运行updateValueandValidity。 How can I manually set an Angular form field as invalid?