Я пытаюсь отключить все даты, когда у пользователя уже зарегистрировано событие.
Я использую https://www.npmjs.com/package/ng-pick-datetime TypeScript и Angular 6. Мне удобнее работать с Java, но я немного изучаю Javascript.
.TS
getUserEvents() {
this._calendarService.getAllEvent().subscribe(res => {
this.allEvents = res.json();
});
}
filterForbiddenDays() {
this.allEvents.forEach(d => {
let day = {
'start': new Date(d.startDate.value),
'end': new Date(d.endDate.value)
};
this.forbiddenDays.push(day);
});
}
public myFilter = (d: Date): boolean => {
//return this.forbiddenDays[0].start.getDate() !== d.getDate() && this.forbiddenDays[1].start.getDate() !== d.getDate() // <-- THIS WORKS GREAT
this.forbiddenDays.filter(data => {
return data.start.getDate() !== d.getDate() // <-- TRUE SHOULD CHANGE COLOR ON DAY IN CALENDAR
});
return false;
}
Если я сопоставлю массив ForbiddenDays вместо forEach, я увижу, что в каждом событии ForbiddenDays, которое должно изменить цвет в эти дни, в календаре происходит сбой.
Но сейчас метод myFilter приводит к следующему:
изображение календаря
Что я делаю не так? Я чувствую, что проблема в методе myFilter.
.html
<div class="example-wrapper datePicker">
<label class="example-input-wrapper" id="eventInputSuccess">
<input (click)="filterForbiddenDays()" id="eventInputError" placeholder="Click to choose date"
(dateTimeInput)="basic.openModal()" [(ngModel)]="dateTimeInput" [owlDateTimeTrigger]="dt"
[owlDateTimeFilter]="myFilter" [owlDateTime]="dt"><i class="fa fa-calendar" aria-hidden="true"></i>
<owl-date-time #dt [pickerMode]="'dialog'"></owl-date-time>
</label>
</div>
</div>
Заранее спасибо!
РЕДАКТИРОВАТЬ:
return this.forbiddenDays[0].start.getDate() !== d.getDate();
приводит к: ожидаемый результат, но для всех дней в моем массиве
Так что, в основном, он прекрасно работает, когда я указываю индекс, например, [0] или [3] и т. Д., Но я не уверен, почему он не работает с forEach () или filter ()