如何仅在填充一个时验证反应性输入字段?

How to validate reactive input field only when one is filled?

如何仅在填写一个时验证反应性输入字段?

我的反应形式是:

this.form = this.fb.group({
      code: [null, [Validators.required, Validators.pattern('^[a-zA-Z]+$')]],
      dateFrom: [null, []],
      dateTo: [null, []],
      uk: [null, []]
    });

我只需要在 dateFrom 填写时验证 dateTo

使用自定义验证器:

在 TS 中:

checkFirstDate(group: FormGroup) {  
  let dateFrom = group.controls.dateFrom.value;
  return dateFrom ? null : { dateFromNotExist: true }     
}


this.form = this.fb.group({
      code: [null, [Validators.required, Validators.pattern('^[a-zA-Z]+$')]],
      dateFrom: [null, []],
      dateTo: [null, []],
      uk: [null, []]
    }, {validator: this.checkFirstDate });

在HTML

   <span class="text-danger" *ngIf="form.hasError('dateFromNotExist') && (form.get('dateTo').dirty || form.get('dateTo').touched)">
    Fill Date Form first
   </span>