[英]clearvalidators not working in angular 6 form control
我有兩個表單組名稱,如下所示。 有時不會向用戶顯示一種表單。 當兩者都顯示時,我沒有問題。 我有一個在表單有效時可見的按鈕。
<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 會拋出 familyInfo 找不到。
我們的一項服務有時會查找成員資料並提取現有的家庭信息/個人信息並填寫 model 並將 showPersonalInfo/showFamilyInfo 設置為 true。
當 showFamilyInfo 為 false 時,我的 InfoForm.FamilyInfo 表單控件顯示為無效。 為了避免這個錯誤,我正在使用下面的代碼清除驗證器,但它仍然顯示 familyInfo 表單控件狀態無效。 我的 PersonalInfo 是有效的。
當 showFamilyInfo 為 false 時,如何忽略與 FmilyInfo 相關的所有內容,以便按鈕可見。
this.InfoForm.get('familyInfo').clearValidators();
this.InfoForm.get('familyInfo').updateValueAndValidity();
我認為您需要先清除錯誤,然后才能更新有效性。 在鏈接的帖子中,Julia P. 的回答涵蓋了如何清除錯誤。 然后運行 updateValueandValidity。 如何手動將 Angular 表單字段設置為無效?
我有同樣的問題,就我而言,代碼setErrors(null)
解決了這個問題。 嘗試這樣做:
this.InfoForm.get('familyInfo').clearValidators();
this.InfoForm.get('familyInfo').setErrors(null);
this.InfoForm.get('familyInfo').updateValueAndValidity();
setErrors(null)
對我有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.