В документации datepicker есть пример того, как всплывающий календарь управляется программно с помощью методов open()
и close()
:
<mat-form-field class="example-full-width">
<input matInput [matDatepicker]="picker" placeholder="Choose a date">
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
<button mat-raised-button (click)="picker.open()">Open</button>
Можно также установить opened
свойство true/false следующим образом:
<button mat-raised-button (click)="picker.opened = true">Open</button>
Интересно, есть ли в любом случае использовать это, чтобы всплывающее окно в календаре оставалось навсегда открытым для того, чтобы позволить клику нажимать на разные даты и отображать этот выбор во входном?
Я думаю, вы можете попробовать это:
<mat-form-field class="example-full-width">
<input matInput (dateChange)="reOpenCalendar()" [matDatepicker]="picker" placeholder="Choose a date">
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
<button mat-raised-button (click)="picker.open()">Open</button>
в вашем файле ts/js компонента вам нужно объявить новый метод:
export class YourComponent{
@ViewChild('picker') picker;
//....
reOpenCalendar(){
let self = this;
setTimeout(
()=>{
self.picker.open();
},
50
);
}
}
Это приведет к внезапному эффекту, когда сборщик дат исчезнет и быстро появится.
Другим решением будет компонент datepicker fork angular material в вашем локальном проекте и ввести свойство Input, чтобы отключить закрытие при выборе даты
dateChange()
к примеру stackblitz в официальных документах, и он все еще закрывает всплывающее окно, когда я выбираю дату: /. Хотелось бы, чтобы документация была немного лучше ... Я даже не знал, что есть источник DateChange. Может быть, мне нужен фактический виджет для этого требования, а не использование DatePicker материала.
Встроенный элемент управления DatePicker библиотеки материалов поставляется с внутренним компонентом Calendar. Вы можете использовать следующее, чтобы иметь календарь, который всегда открыт (без поля ввода, но все еще работает с выбором даты/месяца/года)
Узнайте больше о календаре здесь:
https://onthecode.co.uk/angular-material-calendar-component/