Сначала добавьте Viewchild
в свой календарь, чтобы вы могли манипулировать им, чтобы открыть его программным способом.
Затем, внутри вашего метода, который открывает всплывающее окно, вызовите метод showOverlay
для вашего объекта календаря.чтобы открыть его.
Наконец, заключите в последнюю строку кода setTimout
, чтобы отложить его вызов.
HTML
<p-dialog header="Title" [(visible)]="display" [width]="500" [height]="500">
<div class="row" style="height:300px;">
Select a date
<p-calendar #myCalendar [(ngModel)]="value"></p-calendar>
</div>
</p-dialog>
<button type="text" (click)="showDialog()" pButton icon="fa-external-link-square" label="Choose date"></button>
Ts
@ViewChild('myCalendar') calendar;
display: boolean = false;
showDialog() {
this.display = true;
setTimeout(() => {
this.calendar.showOverlay(this.calendar.nativeElement);
}, 0);
}
См. StackBlitz