-1

我有以下反应形式:

  newTripForm = this.formBuilder.group({
    name: new FormControl('', Validators.compose([Validators.required, Validators.minLength(3)])),
    startDate: new FormControl('', Validators.required),
    endDate: new FormControl(''),
  });

如何添加强制 endDate 大于 startDate 的验证器?另外,有没有办法检查 startDate 和 endDate 是日期?我没有找到任何验证器?

非常感谢(很抱歉这个菜鸟问题)

4

1 回答 1

2

到目前为止,您使用的验证器是FormControl-validators。他们验证单个FormControl. 您还可以为自己编写一个验证器来验证 aFormArray或 a FormGroup。验证器看起来像这样:

dateOrderValidator(formGroup: FormGroup): ValidationErrors | null {
  const startDate = formGroup.controls['startDate']?.value;
  const endDate = formGroup.controls['endDate']?.value;
  // validate date-strings
  // catch missing values
  if (Date.parse(startDate).getTime() >= Date.parse(endDate).getTime)) {
    // return an appropriate error
  }
}

表单生成器

FormBuilder 的主要目的是为我们节省一些样板文件。而不是 name: new FormControl(...) 我们可以写

name: ['initialValue', [<synchronous validators>], [<asynchronous validators]]

甚至更少(如果我们没有验证器):

name: 'initialValue'
于 2021-01-24T10:59:37.440 回答