使用form builder的angular 5验证日期字段

使用form builder的angular 5验证日期字段,angular,validation,angular5,formbuilder,angular-validator,Angular,Validation,Angular5,Formbuilder,Angular Validator,我有表单,我想在提交时验证日期字段,我正在使用表单生成器,我如何才能做到这一点(角度的方式)? 另一个问题是为什么在日期字段中看不到发布日期的值? 我试图搜索,但找不到输入日期字段的解决方案 unamePattern=/^\d{1,2}\/\d{1,2}\/\d{4}$/; 恩戈尼尼特(){ 这本书= { 身份证号码:55, 作者姓名:“vv”, 发布日期:新日期(2018年2月1日), 标题:“抄送” }; this.form=this.formBuilder.group({ 标题:['',

我有表单,我想在提交时验证日期字段,我正在使用表单生成器,我如何才能做到这一点(角度的方式)? 另一个问题是为什么在日期字段中看不到发布日期的值? 我试图搜索,但找不到输入日期字段的解决方案

unamePattern=/^\d{1,2}\/\d{1,2}\/\d{4}$/;
恩戈尼尼特(){
这本书=
{
身份证号码:55,
作者姓名:“vv”,
发布日期:新日期(2018年2月1日),
标题:“抄送”
};
this.form=this.formBuilder.group({
标题:['',验证器。必填],
作者:['',验证器。必填],
datePublish:['',Validators.pattern(this.unamePattern)],
}
);
}

如果您可以使用,那么就很容易掌握日期时间信息,您可以编写自己的验证器

import {AbstractControl} from '@angular/forms';
import * as moment from 'moment';

export class YourValidator {
  static dateVaidator(AC: AbstractControl) {
    if (AC && AC.value && !moment(AC.value, 'YYYY-MM-DD',true).isValid()) {
      return {'dateVaidator': true};
    }
    return null;
  }
}
在表单对象中,您可以像

import {YourValidator} from "....";

this.form = this.formBuilder.group({
    title : ['', Validators.required],
    author : ['', Validators.required],
    datePublish: ['', Validators.compose([Validators.required, YourValidator.dateVaidator])],
});

对于日期验证,您可以使用

进口和使用:


当我尝试插入文本而不是日期时,它仍然是有效的。我不知道why@Asafshay我已经添加了演示链接来测试上面的验证器,看看这个项目现在已经不推荐了,你现在应该使用它了。但除此之外,这就是我想要的答案。它不允许自定义格式。英国格式,例如:DD/MM/YYYY
npm i ng4-validators --save
import { CustomValidators } from 'ng4-validators';

ngOnInit() {
  this.book = 
    {
      id: 55,
      author_name : "vv",
      published_date :  new Date('01/02/2018'),
      title : "cc"
    };

    this.form = this.formBuilder.group({
      title : ['', Validators.required],
      author : ['', Validators.required],
      datePublish: ['', CustomValidators.date,
      }
    );
  }