Prashanth
Prashanth

Reputation: 1305

Validation pattern for date in DD/MM/YYYY format using angular2

How to add validation pattern for Date in DD/MM/YYYY format using angular2 Validator.pattern.

I have the "required" validator in place. Cannot find one for date pattern. Code as below:

this.txtDob = new Control("", Validators.compose([Validators.required]));

Upvotes: 7

Views: 35898

Answers (3)

H.abidi
H.abidi

Reputation: 585

You can create a simple custom validator as below

import {Injectable} from "@angular/core";
import {FormControl} from "@angular/forms";


@Injectable()
export class DateValidator {

  constructor() {
  }

  static date(c: FormControl) {
    const dateRegEx = new RegExp(/^\d{1,2}\.\d{1,2}\.\d{4}$/);
    return dateRegEx.test(c.value) ? null : {date: true}
  }
}

and call it in your form

senddate: new FormControl(new Date(), Validators.compose([Validators.required, DateValidator.date])),

And then simply show the error in your html

      <mat-error *ngIf="form.controls.senddate.dirty && form.controls.senddate.errors?.date">
        La date d'envoi n'est pas <strong>valide</strong>
      </mat-error>

I hope this could help.

Upvotes: 3

Hlawuleka MAS
Hlawuleka MAS

Reputation: 560

You can also create a service( not mandatory, i.e the following could easily be changed to a regular function ) as follows:

import { Injectable } from '@angular/core';
import { FormControl } from '@angular/forms';

    interface Validator<T extends FormControl> {
      (c: T): { [error: string]: any };
    }

    @Injectable()
    export class DateValidatorClass {

      constructor() { }
      dateValidator(c: FormControl) {

        const dateRegEx = new RegExp(yourRegExInHere);;

        return c.value.test(dateRegEx) ? null : {
          dateValidator: {
            valid: false
          }
    };
  }
}

Upvotes: 0

Andrei Zhytkevich
Andrei Zhytkevich

Reputation: 8099

There is no built-in date validator. You have to create a custom one http://blog.thoughtram.io/angular/2016/03/14/custom-validators-in-angular-2.html

Your validator will look like this https://github.com/Angular2Buch/angular2-forms/blob/master/src/app/validators/date.validator.ts

Update: You need to have class for the validator. Specify it as a second element of array in Validators.compose:

Validators.compose([Validators.required, MyValidator])

Pattern may work too: How to add form validation pattern in angular2

Upvotes: 3

Related Questions