Validation
When used with [ngModel] or [formControl], date & time picker provides control validation.
Examples
Invalid input
View on GitHubIf input value isn't a vaild date string, a validation error will be shown. Change the input field value to see it in action.
<input class="form-control" [class.is-invalid]="dateTimeControl.invalid" [(ngModel)]="value" #dateTimeControl="ngModel" placeholder="Date and time" [nxtDateTimeTrigger]="picker" [nxtDateTime]="picker"> <nxt-date-time #picker></nxt-date-time> @if (dateTimeControl.errors?.['dateTimeParse']; as parseError) { <div class="invalid-feedback"> Input is not a valid date string, received "{{ parseError.text }}". </div> }
import { Component, ViewEncapsulation } from '@angular/core' import { FormsModule } from '@angular/forms' import { DateTimeComponent, DateTimeInputDirective, DateTimeTriggerDirective } from 'nxt-pick-datetime' @Component({ selector: 'app-invalid-input', templateUrl: './invalid-input.component.html', styleUrls: ['./invalid-input.component.css'], encapsulation: ViewEncapsulation.Emulated, imports: [ DateTimeTriggerDirective, DateTimeInputDirective, DateTimeComponent, FormsModule ] }) export class InvalidInputComponent { value = new Date() }
Min & max date validation
View on GitHub Selected value should be after "12/26/25, 11:21 PM", received "12/23/25, 11:21 PM".
Selected value should be before "12/20/25, 11:21 PM", received "12/23/25, 11:21 PM".
<input class="form-control" [class.is-invalid]="minDateTimeControl.invalid" [(ngModel)]="value" #minDateTimeControl="ngModel" placeholder="Date and time" [nxtDateTimeTrigger]="pickerMin" [nxtDateTime]="pickerMin" [min]="min"> <nxt-date-time #pickerMin></nxt-date-time> @if (minDateTimeControl.errors?.['dateTimeMin']; as minError) { <div class="invalid-feedback"> Selected value should be after "{{ minError.min | date:'short' }}", received "{{ minError.actual | date:'short' }}". </div> } <br> <input class="form-control" [class.is-invalid]="maxDateTimeControl.invalid" [(ngModel)]="value" #maxDateTimeControl="ngModel" placeholder="Date and time" [nxtDateTimeTrigger]="pickerMax" [nxtDateTime]="pickerMax" [max]="max"> <nxt-date-time #pickerMax></nxt-date-time> @if (maxDateTimeControl.errors?.['dateTimeMax']; as maxError) { <div class="invalid-feedback"> Selected value should be before "{{ maxError.max | date:'short' }}", received "{{ maxError.actual | date:'short' }}". </div> }
import { DatePipe } from '@angular/common' import { Component, ViewEncapsulation } from '@angular/core' import { FormsModule } from '@angular/forms' import { DateTimeComponent, DateTimeInputDirective, DateTimeTriggerDirective } from 'nxt-pick-datetime' @Component({ selector: 'app-validate-min-max', templateUrl: './min-max.component.html', styleUrls: ['./min-max.component.css'], encapsulation: ViewEncapsulation.Emulated, imports: [ DateTimeTriggerDirective, DateTimeInputDirective, DateTimeComponent, FormsModule, DatePipe ] }) export class ValidateMinMaxComponent { value = new Date() min = new Date(this.value.getTime() + 3 * 24 * 60 * 60 * 1000) // 2 days after value max = new Date(this.value.getTime() - 3 * 24 * 60 * 60 * 1000) // 2 days before value }
Custom date filtering function
View on GitHub Selected date can't be a Sunday.
<input class="form-control" [class.is-invalid]="dateTimeControl.invalid" [(ngModel)]="value" #dateTimeControl="ngModel" placeholder="Date and time" [nxtDateTimeTrigger]="picker" [nxtDateTime]="picker" [dateTimeFilter]="dateTimeFilter"> <nxt-date-time #picker></nxt-date-time> @if (dateTimeControl.errors?.['dateTimeFilter']) { <div class="invalid-feedback"> Selected date can't be a Sunday. </div> }
import { Component, ViewEncapsulation } from '@angular/core' import { FormsModule } from '@angular/forms' import { DateFilter, DateTimeComponent, DateTimeInputDirective, DateTimeTriggerDirective } from 'nxt-pick-datetime' const lastSunday = new Date() lastSunday.setDate(lastSunday.getDate() - lastSunday.getDay()) @Component({ selector: 'app-filter', templateUrl: './filter.component.html', styleUrls: ['./filter.component.css'], encapsulation: ViewEncapsulation.Emulated, imports: [ DateTimeTriggerDirective, DateTimeInputDirective, DateTimeComponent, FormsModule ] }) export class FilterComponent { value = lastSunday dateTimeFilter: DateFilter<Date> = (date) => { // Don't allow Sundays if (date?.getDay() == 0) return false return true } }
Invalid date range
View on GitHub "Range.to" should be greater than "range.from".
<input class="form-control" [class.is-invalid]="dateTimeControl.invalid" [(ngModel)]="value" #dateTimeControl="ngModel" placeholder="Date and time" selectMode="range" [nxtDateTimeTrigger]="picker" [nxtDateTime]="picker"> <nxt-date-time #picker></nxt-date-time> @if (dateTimeControl.errors?.['dateTimeRange']) { <div class="invalid-feedback"> "Range.to" should be greater than "range.from". </div> }
import { Component, ViewEncapsulation } from '@angular/core' import { FormsModule } from '@angular/forms' import { DateTimeComponent, DateTimeInputDirective, DateTimeTriggerDirective } from 'nxt-pick-datetime' @Component({ selector: 'app-range', templateUrl: './range.component.html', styleUrls: ['./range.component.css'], encapsulation: ViewEncapsulation.Emulated, imports: [ DateTimeTriggerDirective, DateTimeInputDirective, DateTimeComponent, FormsModule ] }) export class RangeComponent { value = [ new Date(), // from = now new Date(Date.now() - 2 * 24 * 60 * 60 * 1000) // to = now - 2 days, resulting in an invalid range ] }
nxt-components