Я использую приложение Angular Material Date Picker в своем проекте, которое является формой бронирования. Я хочу, чтобы пользователь выбрал дату с помощью Date Picker . Выбор даты будет иметь фильтр, который покажет, какие даты открыты, а какие нет. Чтобы сборщик дат знал, какие даты доступны, он должен позвонить в одну из моих служб, которая возвращает Observable . Вот мой код HTML для средства выбора даты:
<mat-form-field>
<label>
<input matInput [matDatepickerFilter]="dateFilter" required [matDatepicker]="picker" placeholder="Choose a date"
formControlName="date">
</label>
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
и dateFilter ():
dateFilter = (d: Date): boolean => {
if(monthIsSame(d) {
..// have a return statement that process a global variable: 'month: Day[]'
} else {
// the user hit the arrow at the top that switches months
//
// have a process that sets the 'month' variable to a new array of Days that was gotten
// through a RESTful api in one of my services.
// Somehow there must be a loading wheel here until the result from my server comes back and
// month is set to the new current month, and then a return statement that process a month
}
};
Проблема заключается в том, что каждый раз, когда пользователь переключает месяцы, календарь должен загружать месяц доступности с задней стороны сервера, но код с сервера возвращает Observable. Каким-то образом в календаре должно отображаться колесо загрузки, пока значение не возвращается из метода подписки наблюдаемого, и календарь будет заполнен доступными датами.
Любая помощь очень ценится, и если я приду к этому совершенно неправильным путем, пожалуйста, скажите мне. Спасибо!
Изменения:
Примечание: когда я изменяю тип возврата моего фильтра на Observable<boolean>
, он устанавливает все доступные даты.
Я нашел следующую запись . Было бы как-то возможно иметь функцию обратного вызова, которая вызывается, когда пользователь переключает месяцы, запускает мой http-запрос и загружает результаты в локальную переменную. Единственная проблема заключается в том, что календарь должен показывать колесо загрузки, пока не завершится функция обратного вызова.