"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});
    }
    })