首页
学习
活动
专区
工具
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虽然在页面看不到渲染的内容,但组件实实在在被初始化过了...ngIf="false"> ngIf="false" select="app-my-hello"> ​ 5.

55730
  • Angular 显示英雄列表

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

    4.4K70

    小程序的生命周期与性能调优

    本文将深入探讨小程序的生命周期机制,并结合性能调优的相关技术,帮助开发者提升小程序的性能与响应速度。二、小程序生命周期小程序的生命周期分为两个层面:应用生命周期和页面生命周期。...onHide:每次小程序从前台进入后台时触发。onError:小程序发生错误时触发,传入错误信息。...function() { console.log('小程序启动'); }, onShow: function() { console.log('小程序进入前台'); }, onHide...onHide:页面从前台进入后台时触发。onUnload:页面卸载时触发,适合做一些资源的清理工作。...延迟渲染:通过懒加载(lazy loading)等技术,推迟加载不立即展示的资源。例如,使用图片懒加载只在图片进入可视区域时加载图片。

    8010

    ng-content 中隐藏的内容

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

    2.7K30

    理论 | 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) ngIf="selectedHero">     {{selectedHero.name |...这个应用看起来又再次工作正常显示了。 英雄显示在列表中,当你单击英雄的名字的时候,有关你单击英雄的详细信息就显示在页面的底部了。...当用户选择一个英雄时,selectedHero 也就有了值,并且 ngIf 把英雄的详情放回到 DOM 中。

    4K30

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

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

    17721

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

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

    1.8K10

    小程序架构

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

    1.9K30

    【愚公系列】《微信小程序与云开发从入门到实践》006-小程序的开发架构

    让我们一起探索小程序的开发架构,开启高效开发的新篇章吧! 一、小程序的开发架构 小程序开发框架本身的设计目标是让开发者更加简单高效地进行小程序应用的开发,并且让小程序的使用体验与原生类似。...如图 2-4 所示,左列为 UI 线程的工作流程,右列为逻辑线程的工作流程。 对于一个页面来说,当其将要展示时,UI 线程和逻辑线程会同步进入工作流。...具体流程如下: 逻辑线程: 进行页面相关对象的创建工作,并执行 onLoad 生命周期方法。 创建完成后,紧接着执行 onShow 生命周期方法。...UI 线程: 做完初始化工作后,会通知逻辑线程来获取渲染所需数据。 拿到数据后,UI 线程会进行页面的第一次渲染。 渲染完成后,会再次通知逻辑线程。...onHide: 页面进入后台时,逻辑线程会调用 onHide 生命周期方法。 onUnload: 页面被关闭时,逻辑线程会调用 onUnload 生命周期方法。

    13300

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

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

    5.3K20
    领券