Подтвердить что ты не робот

Как выбрать диапазон дат в угловом материале 5.0.0 с datepicker?

Я использую последнюю Angular Material 5.0.0-rc0 в своем приложении Angular 5. Я пытаюсь выбрать диапазон дат с помощью datepicker снабженный материалом Angular, но я не мог найти никакой документации относительно этого.

Все, с чем я мог работать, это выбрать startDate или установить minDate и maxDate. Здесь HTML-код для этого

<mat-form-field>
  <input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="picker" placeholder="Choose a date">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker startView="year" [startAt]="startDate"></mat-datepicker>
</mat-form-field>

и код TS

import {Component} from '@angular/core';

@Component({
  selector: 'datepicker-start-view-example',
  templateUrl: 'datepicker-start-view-example.html',
  styleUrls: ['datepicker-start-view-example.css'],
})
export class DatepickerStartViewExample {
  minDate = new Date(2000, 0, 1);
  maxDate = new Date(2020, 0, 1);
}

Этот код помогает мне выбрать одну дату в диапазоне тех минимальных и максимальных дат, но не позволяет выбрать их диапазон. Хотя использование сторонней библиотеки может решить эту проблему, но у нее будет другой пользовательский интерфейс, который будет отличаться от моего текущего пользовательского интерфейса приложения. Пожалуйста, помогите мне решить эту проблему.

4b9b3361

Ответ 1

Рекомендую проверить ассортимент материалов Сатурна Datepicker. Посмотрите также на их демонстрационную страницу. Это полноценный Material UX со встроенной поддержкой существующей темы Material.

Вы можете установить его с помощью npm install saturn-datepicker. Смотрите их страницу Github для получения полной инструкции по интеграции.

Разметка выглядит так:

  <mat-form-field>
    <input matInput
        placeholder="Choose a date"
        [satDatepicker]="picker"
        [value]="date">
    <sat-datepicker #picker [rangeMode]="true"></sat-datepicker>
    <sat-datepicker-toggle matSuffix [for]="picker"></sat-datepicker-toggle>
  </mat-form-field>

А вот как это выглядит на странице:

Screenshot of the Material date range picker

Ответ 2

В настоящее время нет возможности выбрать диапазон дат, хотя есть проблема с запросом.

Ответ 3

Между тем у вас может быть только два выбора даты. Один для даты начала и один для даты окончания. Что-то вроде этого:

<mat-form-field> //start date datepicker
  <input matInput [min]="minDate" [max]="maxDate" [formControl]="startDate" [matDatepicker]="picker" placeholder="Choose a start date">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker startView="year" [startAt]="minDate"></mat-datepicker>
</mat-form-field>

<mat-form-field> //end date datepicker
  <input matInput [min]="startDate" [max]="maxDate" [formControl]="endDate" [matDatepicker]="picker" placeholder="Choose a date">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker startView="year" [startAt]="startDate"></mat-datepicker>
</mat-form-field>

Тогда у вас может быть место, где, если они изменят endDate на что-то перед startDate он показывает им ошибку или сбрасывает startDate

Ответ 5

Это даже невозможно в Angular Material 7.0.0. Для этого есть разные плагины. Я придумал ngx-aaa-datepicker. Это сработало для меня.

Preview

Вы можете проверить это в NPM