反应形式的自定义验证器控制数量
Custom Validator Control Quantity in Reactive Forms
我在 Angular 的反应式表单中实施自定义验证时遇到了困难。我需要控制数量。数量不应超过可用数量。问题是如果每一行都有子行,我如何才能得到所有数量的总数。我将如何计算子行的总数并将其与找到可用数量的父行进行比较。下面是我的代码。
这也是我的代码 link PLEASE CLICK THIS LINK
customValidator(campo1: string) {
return (group: FormGroup): { [key: string]: any } => {
const receive = group.controls[campo1];
//Change this
const available = 10;
if (receive.value > available) {
return {
out: true
};
}
}
}
密钥正在使用 "parent" 到达 formArray。然后我们可以使用 map 转换数组,只得到 que 数量和 reduce 得到数量的总和
customValidator(campo1: string) {
return (group: FormGroup): { [key: string]: any } => {
//get the formArray
const form=(group.parent as FormArray);
if (form)
{
//get the available quantity using parent
let available =form.parent.get('available_quantity').value;
//the final available are the available less each quantity
available=form.value //In form.value we have e.g. [{quantity:10..},{quantity:16}]
.map(x=>x.quantity?+x.quantity:0) //using map we have, e.g. [10,16]
.reduce((a, b) => a - b, available) //using reduce we substract the quantities to available
if (available<0) {
return {
out: true
};
}
}
}
}
我在 Angular 的反应式表单中实施自定义验证时遇到了困难。我需要控制数量。数量不应超过可用数量。问题是如果每一行都有子行,我如何才能得到所有数量的总数。我将如何计算子行的总数并将其与找到可用数量的父行进行比较。下面是我的代码。
这也是我的代码 link PLEASE CLICK THIS LINK
customValidator(campo1: string) {
return (group: FormGroup): { [key: string]: any } => {
const receive = group.controls[campo1];
//Change this
const available = 10;
if (receive.value > available) {
return {
out: true
};
}
}
}
密钥正在使用 "parent" 到达 formArray。然后我们可以使用 map 转换数组,只得到 que 数量和 reduce 得到数量的总和
customValidator(campo1: string) {
return (group: FormGroup): { [key: string]: any } => {
//get the formArray
const form=(group.parent as FormArray);
if (form)
{
//get the available quantity using parent
let available =form.parent.get('available_quantity').value;
//the final available are the available less each quantity
available=form.value //In form.value we have e.g. [{quantity:10..},{quantity:16}]
.map(x=>x.quantity?+x.quantity:0) //using map we have, e.g. [10,16]
.reduce((a, b) => a - b, available) //using reduce we substract the quantities to available
if (available<0) {
return {
out: true
};
}
}
}
}