gpt4 book ai didi

angular - 如何使用 react 形式验证禁用的控件(未触发验证)

转载 作者:太空狗 更新时间:2023-10-29 18:12:29 24 4
gpt4 key购买 nike

假设我有这个表单结构:

      this.entryForm = this.formBuilder.group({
date: [{value:'' , disabled: true}, [Validators.required]],
notes: [''],
sum_credit: [{value:'', disabled: true }],
sum_debit: [{value:'', disabled: true}],
items: this.initItems()
});
// set validation function to sum_credit

this.entryForm.controls['sum_credit'].setValidators([CommonValidations.validateSomthing(...)]);

sum_credit 被禁用,因为它的值始终被计算。现在我需要验证 sum_credit 是否等于 sum_debit,我已经在使用 validateSomthing 函数进行验证。问题是 validateSomthing 没有被触发,因为控件被禁用了。我该如何解决?

谢谢

最佳答案

Angular 不会触发禁用字段的验证器。解决此问题的一种方法是将验证器应用到组而不是控件(这将触发验证器每次更新到相应组内的任何未禁用的表单控件:

this.entryForm = this.formBuilder.group({
date: [{value:'' , disabled: true}, [Validators.required]],
notes: [''],
sum_credit: [{value:'', disabled: true }],
sum_debit: [{value:'', disabled: true}],
items: this.initItems()
}, { validator: CommonValidations.validateSomthing(...) });

请注意,您需要调整验证器函数以从 sum_debit 控件读取值:

validateFn(group: AbstractControl) {
const control = group.get('sum_debit');
// here you can validate control.value;
}

关于angular - 如何使用 react 形式验证禁用的控件(未触发验证),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51573707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com