###### tags: `Angular` `Reactive Forms` # [Angular] Validators:如何動態更新表單驗證器 ## 初始建立表單 首先,定義一個 FormGroup 如下: ```typescript= form: FormGroup; this.myForm = this.buildForm(); buildForm() { return this.fb.group({ actNo: ['',[Validators.required]], // 帳號 txAmt:['',[Validators.required, Validators.min(1)]], // 金額 } ``` ## setValidators() 設定驗證器 setValidators 可用來設定驗證器,並且會覆蓋掉原本的驗證器: ```typescript= Set a validator for a control in the FormGroup: this.myForm.controls['controlName'].setValidators([Validators.required]) ``` ## addValidators() 添加驗證器 addValidators() 可用來添加驗證器: ```typescript= Add a validator for a control in the FormGroup: this.myForm.controls['controlName'].addValidators([Validators.required]) ``` ## clearValidators() 移除驗證器 clearValidators() 會移除所有驗證器: ```typescript= Remove the validator from the control in the FormGroup: this.myForm.controls['controlName'].clearValidators() ``` ## updateValueAndValidity() 更新驗證器 一旦 validators 有更動,不論是新增或刪除,都必須再透過 `updateValueAndValidity()` 指令更新驗證器。 ```typescript= Update the FormGroup once you have run either of the above lines. this.myForm.controls['controlName'].updateValueAndValidity() ``` ## 參考資料 + [In Angular, how to add Validator to FormControl after control is created?](https://stackoverflow.com/questions/38797414/in-angular-how-to-add-validator-to-formcontrol-after-control-is-created) + [Dynamically Add/Remove Validators in Angular Reactive Forms](https://gouravkajal.medium.com/dynamically-add-remove-validators-in-angular-reactive-forms-2f99c12c285a)