Using Datepicker Range in Angular!

Cüneyt
5bayt
Published in
2 min readJan 9, 2019

I’ll be writing about datepicker component that i have used one of my projects. It is like a general problem to use date and types in every programming languages. So I just wanted to share my little experience about primeng’s datepicker component and filtering a datatable with date range. Primeng’s Range calender has no filter attribute to range dates.

Filter constraints are;

filterConstraints: {startsWith(value: any, filter: any): boolean;contains(value: any, filter: any): boolean;endsWith(value: any, filter: any): boolean;equals(value: any, filter: any): boolean;notEquals(value: any, filter: any): boolean;in(value: any, filter: any[]): boolean;lt(value: any, filter: any): boolean;lte(value: any, filter: any): boolean;gt(value: any, filter: any): boolean;gte(value: any, filter: any): boolean;};

Adding own date-range filter method

I am using p-calender in my html file which is contained in my component folder.

<p-calendar placeholder="Choose Date" [(ngModel)]="rangeDates" selectionMode="range" readonlyInput="true" [style]={'width':'100%'}" [monthNavigator]="true"[yearNavigator]="true" yearRange="2000:2030" dateFormat="yy-mm-dd"(onSelect)="dt.filter($event.target.value, col.field ,'myFilter')"></p-calender>

Important! You need to call your method when your component starts to work. That means you can write your code inside ngOnInit()method by implementing onInit.

Here is the range method which is in my .ts file.

public calenderFilter() {
this._table.filterConstraints['myFilter'] = (value: any, filter: any): boolean => {
value = value.substring(0, 10);
filter = this.convertDate(filter);
if (this.rangeDates["1"] === null) {
if (value === filter) {
return value == filter;
}
} else {
let startDate = this.convertDate(this.rangeDates["0"]);
let finishDate = this.convertDate(this.rangeDates["1"]);
if (startDate <= value && finishDate >= value) {
return true;
}
}}}

Using the variable rangeDates declared and bound with ngModel.

--

--