首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

p-dialog onHide不能与ngIf一起工作?

p-dialog 是 PrimeNG 框架中的一个组件,用于创建模态对话框。而 ngIf 是 Angular 框架中的一个指令,用于根据条件来显示或隐藏 DOM 元素。

p-dialog 的 onHide 是一个回调函数,用于在对话框隐藏时执行特定的操作。而 ngIf 是根据条件来决定 DOM 元素是否渲染,如果条件为 false,则对应的 DOM 元素将被移除。

由于 p-dialog 的 onHide 是在对话框隐藏时执行的,而 ngIf 是在 DOM 渲染阶段决定是否显示元素,它们的执行时机是有区别的。当使用 ngIf 来控制 p-dialog 的显示与隐藏时,会导致 onHide 无法正常触发,因为在 onHide 执行时,对话框已经被 ngIf 移除了,无法触发对话框的隐藏事件。

为了解决这个问题,可以考虑使用 ng-template 和 ng-container 来代替 ngIf。通过 ng-template 可以将 p-dialog 放置在容器中,并在需要显示时动态渲染。这样就可以在对话框隐藏时触发 onHide 回调函数。

示例代码:

代码语言:txt
复制
<ng-container *ngIf="showDialog">
  <ng-template pTemplate="content">
    <p-dialog header="Dialog" [(visible)]="showDialog" (onHide)="onDialogHide()">
      <!-- 对话框内容 -->
    </p-dialog>
  </ng-template>
</ng-container>

在上述示例中,使用了 ng-container 和 ng-template 来控制对话框的显示与隐藏。当条件满足时,ng-container 会动态渲染 ng-template 内部的内容,从而显示 p-dialog 对话框。当隐藏对话框时,ng-template 内部的内容会被移除,触发 onHide 回调函数。

对于腾讯云相关产品推荐,可参考以下链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Angular教程】-内容投影u002F@ContentChildu002F@ViewChild

---- 前言 这一篇我们带来的是关于组件基础使用的最后一块,内容投影和Vue中的插槽很类似,在组件封装的时候非常有用,我们一起来体验一下。 正文 1....在这种情况下,建议使用 ng-content 元素,因为只要组件的使用者提供了内容,即使该组件从未定义 ng-content 元素或该 ng-content 元素位于 ngIf 语句的内部,该内容也总会被初始化...通过内置的动态指令*ngIf来控制是否渲染投影。...: ContentDirective; } 通过日志可以看到我们在切换容器组件的expanded标识时,只有开启状态my-hello组件才会初始化,下面的这个ngIf虽然在页面看不到渲染的内容,但组件实实在在被初始化过了... ​ 5.

53430
  • 理论 | Angular 中的响应式编程 -- 浅淡 Rx 的流式思维

    今天我们一起通过一个具体的例子来理解响应式编程设计的思路。最后会看看刚刚发布的 Angular 4 的新特性给响应式编程带来了什么新鲜的元素。...这个 valueChanges 返回的其实就是一个 Observable ,见下面的 TypeScript 定义: 既然我们得到了这个原始数据流,剩下的工作就比较简单了。...Async 管道 到目前为止,我们还没有进行对 Observable 的订阅,如果订阅的话,写的再漂亮的语句也不会执行的。...那么问题来了,订阅的话,值怎么获得呢?答案是 Async 管道。Async 会在组件初始化时自动的订阅以及在组件销毁时自动取消订阅,太爽了。...Angular 4 中的 NgIf 的改进 Angular 4 中的 ngIf 现在可以携带 else 了,如果你曾经使用过 Angular 就知道,原来我们是得写两个 ngIf 来完成类似的功能的。

    5.3K10

    Angular 显示英雄列表

    你可以定义属于特定组件的私有样式,并且让组件所需的一切(代码、HTML 和 CSS)都放在一起。 这种方式让你在其它地方复用该组件更加容易,并且即使全局样式和这里不一样,组件也仍然具有期望的外观。...并且为这个 div 添加 Angular 的 *ngIf 指令,把它的值设置为 selectedHero。 不要忘了 ngIf 前面的星号(*),它是该语法中的关键部分。...src/app/heroes/heroes.component.html (*ngIf)    {{selectedHero.name | uppercase...这个应用看起来又再次工作正常显示了。 英雄显示在列表中,当你单击英雄的名字的时候,有关你单击英雄的详细信息就显示在页面的底部了。...当用户选择一个英雄时,selectedHero 也就有了值,并且 ngIf 把英雄的详情放回到 DOM 中。

    4.4K70

    ng-content 中隐藏的内容

    如果 ng-content 上没有设置 select 属性,它将接收全部内容,或接收匹配任何其他 ng-content 元素的内容。...有时你只需要将其包装在额外的容器中即可应用 ngIf 或 ngSwitch。无论什么原因,通常情况下,你的内部组件不是包装器的直接子节点。...在我们尝试解释为什么之前,让我们再来验证一个问题,即在 ng-content 指令的外层容器中添加 ngIf 指令: import { Component } from '@angular/core';...为什么按照我们的预期运行? The explanation 不会 “产生” 内容,它只是投影现有的内容。...因为 ng-content 只是移动元素,所以可以在编译时完成,而不是在运行时,这大大减少了实际应用程序的工作量。

    2.7K30

    【腾讯技术创作特训营第二季】微信小程序技术分享:生命周期详解(旧题新说)

    页面生命周期执行的顺序是:onLoad --> onShow --> onReady --> onHide。...2、当进入下一个页面的生命周期执行次序(当前页面)onHide --> (下一个页面)onLoad --> (下一个页面)onShow --> (下一个页面)onReady。...4、当离开小程序的生命周期执行次序(App)onHide。...最后通过本文关于前端开发中的微信小程序生命周期的详细介绍,不管是在实际的前端开发工作中还是在前端求职面试中都是非常关键的知识点,所以作为前端开发者来说必须要掌握它相关的内容,尤其是从事前端开发不久的开发者来说尤为重要...欢迎关注,一起交流,共同进步。

    14621

    Angular 显示英雄列表

    你可以定义属于特定组件的私有样式,并且让组件所需的一切(代码、HTML 和 CSS)都放在一起。 这种方式让你在其它地方复用该组件更加容易,并且即使全局样式和这里不一样,组件也仍然具有期望的外观。...并且为这个 div 添加 Angular 的 *ngIf 指令,把它的值设置为 selectedHero。 不要忘了 ngIf 前面的星号(*),它是该语法中的关键部分。...src/app/heroes/heroes.component.html (*ngIf)     {{selectedHero.name |...这个应用看起来又再次工作正常显示了。 英雄显示在列表中,当你单击英雄的名字的时候,有关你单击英雄的详细信息就显示在页面的底部了。...当用户选择一个英雄时,selectedHero 也就有了值,并且 ngIf 把英雄的详情放回到 DOM 中。

    4K30

    AngularDart4.0 英雄之旅-教程-05多组件 顶

    您需要将其分解为子组件,每个子组件都专注于特定的任务或工作流程。 最终,AppComponent可以成为托管这些子组件的简单shell。...完成后,新模板应该如下所示:lib/src/hero_detail_component.dart (template) template: ''' <div *ngIf="hero !...将该属性与必要的导入一起添加到HeroDetailComponent类中。...该应用程序工作! 应用程序设计更改 和以前一样,每当用户点击一个英雄名字时,英雄详情就会出现在英雄列表的下方。 但是现在HeroDetailComponent正在呈现这些细节。...你可以在触及英雄详情视图的情况下演化AppComponent。 您可以在将来的某个父组件的模板中重用HeroDetailComponent。 查看应用程序结构 确认您具有以下结构: ?

    1.8K10

    小程序架构

    视图层和逻辑层分离,通过数据驱动,事件交互,直接操作DOM 视图层负责渲染页面结构,逻辑层负责逻辑处理、数据请求、接口调用等 视图层与逻辑层通过数据和事件进行通信,逻辑层提供数据给视图层,视图层通过绑定...由上图可知,小程序由两大线程组成:负责界面的视图线程(view thread)和负责数据、服务处理的服务线程(appservice thread),两者协同工作,完成小程序页面生命周期的调用。...视图线程有四大状态: 初始化状态:初始化视图线程所需要的工作,初始化完成后向 “服务线程”发送初始化完成信号,然后进入等待状态,等待服务线程提供初始化数据。...系统的初始化工作完毕,就调用自定义的onload和onshow,然后等待视图线程的“视图线程初始化完成”号。...当小程序进入到后台,先执行页面onHide方法再执行应用onHide方法。 当小程序从后台进入到前台,先执行应用onShow方法再执行页面onShow方法。

    1.8K30

    Angular快速学习笔记(2) -- 架构

    - 组件定义视图,是可视化部分,每个应用都至少有一个根组件 - 组件使用服务,组件提果数据可视化,而服务提供与视图直接相关的功能,后台开发的容易理解。...模板中的指令会提供程序逻辑,而绑定标记会把你应用中的数据和 DOM 连接在一起。..."let hero of heroes" (click)="selectHero(hero)"> {{hero.name}} <app-hero-detail *ngIf...1.2.3.2 Pipes管道 一般的模板引擎都会提供pipes功能,angular也例外,Angular 的管道可以让你在模板中声明显示值的转换逻辑。...通过把组件中和视图有关的功能与其他类型的处理分离开,你可以让组件类更加精简、高效 组件不应该定义任何诸如从服务器获取数据、验证用户输入或直接往控制台中写日志等工作。 而要把这些任务委托给各种服务。

    5.2K20

    AngularDart4.0 指南-体系结构概述 顶

    虽然根模块可能是小应用程序中的唯一模块,但大多数应用程序都有更多的功能模块,每个模块都是专用于应用程序域,工作流程或紧密相关的一组功能的一致代码块。...模板,元数据和组件一起描述一个视图。 以类似的方式应用其他元数据注解以指导Angular行为。 @Injectable,@Input和@Output是一些比较流行的注解。...* ngIf仅在选择的英雄存在时才包含HeroDetail组件。 在Dart中,唯一值为true的是布尔值true; 所有其他值是错误的。...HeroService取决于日志服务和另一个处理服务器频繁通信工作的BackendService。...一个组件的工作是启用用户体验,仅此而已。 它在视图(由模板呈现)和应用程序逻辑(通常包括模型的一些概念)之间起中介作用。 一个好的组件提供了数据绑定的属性和方法。 它委托一切不重要的服务。

    7.9K30

    小程序开发知识必备-自定义组件

    自定义组件的生命周期 created:在组件实例进入页面节点树时执行,注意此时不能调用 setData attached:在组件实例进入页面节点树时执行, this.data 已被初始化为组件的当前值,绝大多数初始化工作可以在这个时机进行...this.globalData.userInfo = userInfo; } }, onShow(): function() { console.log('onShow监听小程序显示'); }, onHide...: function () { // 生命周期函数--监听页面隐藏 console.log("onHide"); }, onUnload: function () { /...只要展示这个页面,就会自动加载); 首次显示页面,会触发 onReady 方法,渲染页面和样式,一个页面只会调用一次(刚加载时调用一次); 当小程序后台运行或跳转(wx.navigateTo)到其他页面时,触发 onHide...wx.navigateBack(),会触发 onUnload 1.小程序 页面加载顺序是先加载 onLoad,再是 onShow,最后 onReady 2.原生 JS document.ready 表示文档结构加载完成(包含图片等非文字媒体文件

    1.3K20
    领券