【问题标题】:Programmatically open PrimeNG calendar in modal popup在模式弹出窗口中以编程方式打开 PrimeNG 日历
【发布时间】:2023-04-10 22:45:01
【问题描述】:

如何在模态弹出窗口中使 PrimeNG 日历默认处于打开状态?或者如何触发点击事件以打开打字稿模式弹出窗口中的 PrimeNG 日历?

如果我在HTML本身中使用,它会触发点击事件以通过showoverlay()打开日历,但是在模态弹出窗口中使用时,由于弹出窗口不在DOM元素中,它会显示错误,因为showoverlay()不是函数。

【问题讨论】:

    标签: angular typescript primeng primeng-calendar primeng-dialog


    【解决方案1】:

    首先,将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

    【讨论】:

    • 使用 p-dialog 时,出现 p-dialog 是未知元素的错误,分析时需要升级我的 angular-cli 版本,但如果我这样做了,它会影响其他一些组件.那么你能告诉我如何在 ngx-bootstrap 的模态弹出窗口中以编程方式打开 PrimeNG 日历,否则有什么方法可以在不升级的情况下使用 p-dialog?。
    • 您是否在您的AppModule 文件中导入了DialogModule?您使用哪个版本的 PrimeNG?
    • 是的,已导入但未添加导入,现在可以使用。谢谢!
    猜你喜欢
    • 2017-10-16
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 2015-04-10
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多