Angular 2中的条件验证

Cen*_*ael 5 javascript validation angular

Angular 2中的验证非常简单,非常棒.但是,如果选择了其他字段,如何使必填字段可选.

这是我的规则

this.contractsFilter = this.fb.group({
  selectedContractType: ['', [Validators.required]],
  selectedYear: ['', [Validators.required]],
  selectedPde: ['', [Validators.required]],
  refNo: ['', []]
});
Run Code Online (Sandbox Code Playgroud)

如果refNo由用户提供,我希望其他标记为必需的字段为"不需要".

uma*_*mar 4

以下是如何动态添加或删除某些控件的验证器

private addValidator(control, validator) {
    let existingValidators = control.validator;
    control.setValidators(Validators.compose([existingValidators, validator]));
    control.updateValueAndValidity();
  }
Run Code Online (Sandbox Code Playgroud)

并删除验证器

  private removeRequiredValidator(control, otherValidators) {
    control.clearValidators();
    if (otherValidators) {
      control.setValidators(otherValidators);
    }
    control.updateValueAndValidity();
  }
Run Code Online (Sandbox Code Playgroud)