日期最小值的 Angular 自定义验证器

标签 angular angular-validation

我正在尝试为日期输入创建一个验证器。

所以我写了这段代码,但它没有按预期工作!

export class CustomValidators {
  static dateMinimum(date: string): ValidatorFn {
    return (control: AbstractControl): ValidationErrors | null => {
      if (control.value == null) {
        return null;
      }

      const controlDate = moment(control.value, FORMAT_DATE);

      if (!controlDate.isValid()) {
        return null;
      }

      const validationDate = moment(date);

      return controlDate.isAfter(validationDate) ? null : {
        'date-minimum': {
          'date-minimum': validationDate.format(FORMAT_DATE),
          'actual': controlDate.format(FORMAT_DATE)
        }
      };
    };
  }
}

我遇到了这个错误

ERROR Error: Expected validator to return Promise or Observable.at toObservable (forms.js:749)

我真的不知道哪件事是不正确的...我找到了很多关于如何创建不带参数的自定义验证器的示例,但没有一个带参数...

我需要像这样使用验证器:

    this.projectForm = this.builder.group({
      date: ['', Validators.required, CustomValidators.dateMinimum('2018-12-12')],
    });

最佳答案

一切正常....

问题出在表单创建本身......

date: ['', Validators.required, CustomValidators.dateMinimum('2018-12-12')],

应该是

date: ['', [Validators.required, CustomValidators.dateMinimum('2018-12-12')]],

关于日期最小值的 Angular 自定义验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49284110/

相关文章:

angular - 如何在iframe中的Kibana仪表板中绕过登录

javascript - 如何在 AngularJS 中启用/禁用 html 控件的验证

angular - 不推荐使用 FormBuilder 组

javascript - 输入动态填充时 AngularJS 表单验证失败

Angular webpack编译成功,卡在编译阶段-网页打不开

javascript - 使用 Angularfire2 和 firestore 加入查询

javascript - 我想从在垫复选框中选中的项目中列出一个列表

javascript - 在输入 Angular 2 动态表单上添加事件

angular - react 形式 Angular 2的多个自定义验证器

javascript - Angularjs ng-禁用