Я создал небольшой StackBlitz-Project, который представляет мою ситуацию. Я хочу, чтобы войти все объекты в выбранном диапазоне дат. Но когда я фильтрую свой объект, я получаю пустой массив в качестве результата. Я хотел спросить вас, как сравнивать даты, потому что в зависимости от того, какой у вас указатель даты, вы получаете другое значение от средства выбора даты. Это также зависит от того, в каком формате вы храните дату (в данном случае строку).
Не могли бы вы помочь мне с моим простым примером? https://stackblitz.com/edit/angular-hbqguu
РЕДАКТИРОВАТЬ: Я создал массив:
public obj = [{
name: "jan",
date: "20.03.2010"
},{
name: "ion",
date: "10.01.2003"
},{
name: "caesar",
date: "01.02.2009"
},{
name: "chris",
date: "17.03.2015"
}]
, и я пытаюсь отфильтровать объекты с определенной датой формата 'DD.MM .YY ', как вы можете видеть. Поэтому я создал функции для двух разных входов типа date.
<div>
<p>Filtering by date range</p>
<input type="date" (change)="changeFirstInput($event)"> -
<input type="date" (change)="changeSecondInput($event)">
<span>
<ul>
<ng-container *ngFor="let o of obj">
<li> {{o.name}} {{o.date}}</li>
</ng-container>
</ul>
</span>
</div>
Функции фильтра
public date1: Date = new Date("2000-01-01");
public date2: Date = new Date();
changeFirstInput(e){
this.date1 = e.target.value;
console.log(this.obj.filter(o => new Date(o.date) >= this.date1 &&
new Date(o.date) <= this.date2 ));
}
changeSecondInput(e){
this.date2 = e.target.value;
console.log(this.obj.filter(o => new Date(o.date) >= this.date1 &&
new Date(o.date) <= this.date2 ));
}
Моя функция фильтра возвращает пустой массив []
. Я не совсем уверен, как сравнивать даты, думаю, это зависит от всех форматов, которые вы указали выше.