簡體   English   中英

clearvalidators 在 angular 6 表單控件中不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM