"exclusive or" 中的 FormGroup 验证
FormGroup validation in "exclusive or"
我有一个由 3 个输入字段组成的 FormGroup:reservationCode、secretCode 和条形码。
字段条码就是reservationCode + '-' + secretCode。 (这是因为条形码是一个可以在文本中找到并且可以使用复制+粘贴功能的字段)
现在,仅当条形码具有值或 reservationCode 和 secretCode 具有值时,使用这些字段的按钮才必须处于活动状态。
逻辑应该是这样的:"barcode || reservationCode && secretCode"
这是我在 .ts 中的 formGroup 的代码:
this.voucherVerifyUserDataFormGroup = formBuilder.group({
reservationCode: [''],
secretCode: [''],
barcode: ['']
});
我不知道如何管理 formControl 验证器以及是否必须创建一个自定义验证器。
可以使用*ngIf/disabled.
实现
<input type="button" *ngIf="isDataPresent" value="Paste">
分量:
get isDataPresent(){
return this.voucherVerifyUserDataFormGroup.get('barcode').value || (this.voucherVerifyUserDataFormGroup.get('reservationCode').value && this.voucherVerifyUserDataFormGroup.get('secretCode').value);
}
Try this :
this.voucherVerifyUserDataFormGroup.valueChanges.subscribe((form : any) =>{
//check your condition :
if(form.barcode != '' || (form.reservationCode != '' && form.secretCode != '')){
this.voucherVerifyUserDataFormGroup.setErrors(null);
}
else
{
this.voucherVerifyUserDataFormGroup.setErrors({ 'invalid': true});
}
})
我有一个由 3 个输入字段组成的 FormGroup:reservationCode、secretCode 和条形码。
字段条码就是reservationCode + '-' + secretCode。 (这是因为条形码是一个可以在文本中找到并且可以使用复制+粘贴功能的字段)
现在,仅当条形码具有值或 reservationCode 和 secretCode 具有值时,使用这些字段的按钮才必须处于活动状态。
逻辑应该是这样的:"barcode || reservationCode && secretCode"
这是我在 .ts 中的 formGroup 的代码:
this.voucherVerifyUserDataFormGroup = formBuilder.group({
reservationCode: [''],
secretCode: [''],
barcode: ['']
});
我不知道如何管理 formControl 验证器以及是否必须创建一个自定义验证器。
可以使用*ngIf/disabled.
实现<input type="button" *ngIf="isDataPresent" value="Paste">
分量:
get isDataPresent(){
return this.voucherVerifyUserDataFormGroup.get('barcode').value || (this.voucherVerifyUserDataFormGroup.get('reservationCode').value && this.voucherVerifyUserDataFormGroup.get('secretCode').value);
}
Try this :
this.voucherVerifyUserDataFormGroup.valueChanges.subscribe((form : any) =>{
//check your condition :
if(form.barcode != '' || (form.reservationCode != '' && form.secretCode != '')){
this.voucherVerifyUserDataFormGroup.setErrors(null);
}
else
{
this.voucherVerifyUserDataFormGroup.setErrors({ 'invalid': true});
}
})