Tenho uma condição que, se for verdadeira, quero adicionar uma série de validações a alguns formulários e, quando a condição não for verdadeira, removerá os validadores.
Agora, quando adiciono o validador, ele funciona corretamente, mas quando tento removê-lo, ele não é removido corretamente!!!
//html
<div [formGroup]="form">
<p-checkbox (onChange)="changeShouldEnter()" name="shouldEnter" [value]="true"
formControlName="shouldEnter"></p-checkbox>
<label class="radio-lable mx-2">text</label>
</div>
//datilografado
ngOnInit(): void {
this.form = new FormGroup({
shouldEnter: new FormControl([]),
storeCategoryId: new FormControl(),
storeCategoryItemCode: new FormControl(),
})
}
changeShouldEnter() {
if (this.form.get('shouldEnter').value[0]) {
this.form.get("storeCategoryId").addValidators(Validators.required)
this.form.get("storeCategoryItemCode").addValidators(Validators.required)
} else {
this.form.get("storeCategoryId").removeValidators(Validators.required)
this.form.get("storeCategoryItemCode").removeValidators(Validators.required)
}
this.cdr.detectChanges();
}
Eu até tentei dessa forma, mas no final, quando vou logar o formulário, ele continua inválido, e também dentro dos controles desse formulário, ele diz require: true
novamente.
.removeValidators([Validators.required])
//or
.addValidators([])
Ao adicionar ou remover validadores, certifique-se de chamar
updateValueAndValidity
, para que as alterações sejam refletidas.Dos documentos: