创建自定义验证器以针对多个表单字段进行验证

Create a custom validator to validate against multiple form fields

我有以下表单设置:

this.form = new FormGroup({
  ...
  year: new FormControl("", validateDateMethod(year, month, day)),
  month: new FormControl("", validateDateMethod(year, month, day)),
  day: new FormControl("", validateDateMethod(year, month, day))
});

我想创建一个自定义验证器来验证基于 3 个字段的日期。

是否可以基于多个表单值创建验证器?

普通海关验证器只接受当前控件和任何参数值。

谢谢

您可以将所有三个日期分组到一个表单组中,并向其中添加验证器。然后您可以验证所有三个字段。

 this.form = new FormGroup({
      ...
      dateGroup:this.formBuilder.group({
      year: new FormControl(""),
      month: new FormControl(""),
      day: new FormControl("")
    },{validator:validateDates}) 
  });

    validateDates(c:AbstractControl){
    const year = c.get('year');
    const month = c.get('month');
    const day = c.get('day');
    ....
    }