Проверка FormGroup в «эксклюзивном» - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть FormGroup, которая состоит из 3 полей ввода: bookingCode, secretCode и barcode.

Полевой штрих-код - это просто bookingCode + '-' + secretCode.(это потому, что штрих-код - это поле, которое можно найти в тексте и которое можно использовать с функцией copy + paste)

сейчас, кнопка, которая использует эти поля, должна быть активной, только если штрих-код имеет значение или если параметр bookingCode и secretCode имеетзначение.

логика должна выглядеть примерно так: "штрих-код || bookingCode && secretCode"

вот код группы formGroup, который у меня есть в .ts:

 this.voucherVerifyUserDataFormGroup = formBuilder.group({
  reservationCode: [''],
  secretCode: [''],
  barcode: ['']
});

Я не знаю, как управлять валидаторами formControl и нужно ли мне создавать собственные.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018
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});
    }
    })
0 голосов
/ 12 ноября 2018

Вы можете достичь с помощью * 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);
}
...