this.form.controls[keyOf<IBranchForm>('vatNo')].valueChanges
.subscribe(change => {
this.setOrRemoveValidators(this.form);
});
private setOrRemoveValidators(form: FormGroup): void {
const vatNoIsRequired = true;
if (vatNoIsRequired) {
form.controls['vatNo'].setValidators(Validators.required);
}
else {
form.controls['vatNo'].setValidators([]);
}
form.controls['vatNo'].updateValueAndValidity();
}
我面临的问题是,我需要更新表单值和有效性,以便添加或删除UI中显示的错误,但这当然会导致subscribe再次运行,我们进入一个无限循环。
我现在觉得,基于值更改来更改表单值或有效性的方法可能不是正确的方法,因为在解决问题时会遇到麻烦(emitEvent:false也不会导致UI更新)。