Angular 角反应形式的DOB验证

Angular 角反应形式的DOB验证,angular,angular2-forms,angular-reactive-forms,angular4-forms,Angular,Angular2 Forms,Angular Reactive Forms,Angular4 Forms,我正在尝试以角度2+反应形式验证出生日期。我想在所选DOB日期超过100年时显示错误消息 前端侧 <div [ngClass]="setClassDOB()"> <input class="form-control" type="date"name="dob"formControlName="dob" placeholder="DOB"> </div> 将其放入您的脚本中 validateDOB(e){ let year = new Dat

我正在尝试以角度2+反应形式验证出生日期。我想在所选DOB日期超过100年时显示错误消息

前端侧

 <div [ngClass]="setClassDOB()">
 <input class="form-control" type="date"name="dob"formControlName="dob" placeholder="DOB">
 </div>

将其放入您的脚本中

  validateDOB(e){
    let year = new Date(e).getFullYear();
    let today = new Date().getFullYear();
    if(today - year >= 100){
      //Code Something
    }
  }
在html中更新此内容

<input class="form-control" (change)="validateDOB(dob)" type="date" name="dob" formControlName="dob" placeholder="DOB">


这可能会帮助您:)

您必须创建一个自定义表单验证程序来实现这一点

  • 创建一个接受maxAge并返回validatorFn的自定义验证器
  • const youngerThanValidator=(maxAge:number):ValidatorFn=>control=>
    (新日期()).getFullYear()-(新日期(control.value)).getFullYear()>maxAge
    ? {年轻:{maxAge}}
    :null;
    
  • 以你的反应形式使用它
  • form=newformgroup({
    dob:新FormControl(空,youngerThanValidator(100))
    });
    
  • 当触摸输入无效时,在模板中显示错误
  • 
    太旧:{error.maxAge}
    
    `validateDOB(e){let year=new Date(e).getFullYear();let today=new Date().getFullYear();if(today-year>=100){return{'has danger':!this.dob.pristine&&!this.dob.valid};}`我做了这个但不工作了你能分享你的编码吗?不工作了,首先,这一年可以让你永远输入数字——当然它说的是“编写一些代码”,但这应该是解决方案的一部分这在第一个值集上起作用,但随后control.value总是空的