【发布时间】:2018-07-28 17:29:57
【问题描述】:
假设我有这个表单结构:
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 没有被触发,因为控件被禁用。我该如何解决?
谢谢
【问题讨论】:
-
如果
sum_credit是“总是计算出来的”,为什么你还需要一个验证器呢?感觉你应该有一个单元(或集成)测试。 -
在我看来,
sum_credit甚至不应该出现在表格中。当您处理提交并传递对象时,只需添加该字段的计算即可。 -
@maxime1992 你是对的,计算的值已经是正确的值,不需要验证,但这里不是这样,我不想验证 sum_credit 本身,我想确保 sum_credit 等于 sum_debit.. 如果它们不相等,那么我应该通知用户调整项目值,直到这些值相等。
-
在后者的情况下,您确实需要组中的验证器而不是控件。所以你应该对我的回答没意见。
标签: angular angular-reactive-forms