display:none 和 *ngIf = 'false' 之间有什么区别?

2024-02-05

The display:none是CSS表。它
将从 DOM 树中删除元素。 这ngIf = 'false'还从 DOM 树中删除元素。 他们之间有什么区别?


display:none https://developer.mozilla.org/en-US/docs/Web/CSS/display

From MDN Web Docs https://developer.mozilla.org/en-US/docs/Web/CSS/display

价值none让您关闭元素的显示;什么时候 你用none,所有后代元素也都有其显示 关掉。该文档的呈现方式就好像该元素没有呈现一样 存在于文档树中。

但是当使用开发工具查看页面的 DOM 时,仍然有元素确实存在在 DOM 树中。这意味着元素不会从 DOM 树中完全删除。


*ngIf="false" https://angular.io/api/common/NgIf

从 DOM 树中完全删除元素。因此,在页面渲染方面,比较display:none, using *ngIf="false"通过快速页面渲染提供更好的性能。

From Angular Guide https://angular.io/guide/structural-directives#ngif-case-study

The ngIf https://angular.io/api/common/NgIf指令不会隐藏 CSS 元素。它添加和 从 DOM 中物理删除它们。使用浏览器确认这一事实 用于检查 DOM 的开发人员工具。

当条件为false, NgIf从中删除它的宿主元素 DOM,将其与 DOM 事件(它生成的附件)分离, 将组件从 Angular 变化检测中分离出来并销毁它。 组件和 DOM 节点可以被垃圾收集并释放 记忆。


下面的图片将很好地描述它们

1) 不使用display:none and *ngIf="false"

2)使用display:none and *ngIf="false"


隐藏比较(display:none) 与删除 (*ngIf='false') https://angular.io/guide/structural-directives#why-remove-rather-than-hide

From Angular Guide https://angular.io/guide/structural-directives#why-remove-rather-than-hide

隐藏和删除之间的区别对于简单的问题来说并不重要 段落。当宿主元素附加到一个 资源密集型组件。这样的组件的行为仍在继续 即使隐藏时。该组件保持附加到其 DOM 元素。它 不断监听事件。 Angular 不断检查更改 可能会影响数据绑定。无论组件在做什么,它都会保持 正在做。

虽然不可见,但该组件及其所有后代 组件——占用资源。性能和内存负担可以是 严重时,响应能力会降低,并且用户什么也看不到。

从积极的一面来看,再次显示该元素很快。这 组件先前的状态被保留并准备显示。这 组件不会重新初始化——这一操作的成本可能很高。 所以隐藏和展示有时是正确的做法。

但如果没有令人信服的理由让它们留在身边,你的 首选应该是删除用户看不到的 DOM 元素 并使用结构指令恢复未使用的资源,例如NgIf .

这些相同的考虑因素适用于每个结构指令,无论 内置或自定义。在应用结构指令之前,您可以 想要暂停一下考虑添加和的后果 删除元素以及创建和销毁组件。

希望这能帮助您理解它们之间的区别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

display:none 和 *ngIf = 'false' 之间有什么区别? 的相关文章

  • 如何在ionic 2中创建覆盖页面?

    当我进入新页面时如何创建透明的引导覆盖页面 我如何在 ionic 2 中实现 您可以在外部创建 div
  • 如何使用深度等于 (Angular 7)

    通过 VS Code 自动导入 import deepEqual require deep equal 不起作用 错误 TS1202 定位时无法使用导入分配 ECMAScript 模块 考虑使用 import as ns from mod
  • angularfire 2:错误“未处理的承诺拒绝:TypeError:无法读取属性”

    我尝试了一个示例应用程序来连接到 Firebase 在我的 Main ts 中我这样写 import bootstrap from angular platform browser dynamic import enableProdMode
  • 如何在 Angular 4 中的 HTML 中包含或排除属性

    我正在使用 Angular 4 和 Angular 材料来构建一张桌子 我想要mat sort header有条件地添加到以下模板中
  • Angular 提供的服务在 VS forRoot 中

    我想知道这两个代码块是否等效 我可以用吗providedIn与以下结果相同forRoot Injectable providedIn root export class MyService constructor vs Injectable
  • 在具有多级分组的 HTML 表格中显示数据

    我必须通过使用 rowspan 进行分组来显示 HTML 表中的一些数据 下面是预期的 GUI 我有如下所示的 JSON 数据 JSON数据here https jsoneditoronline org id 1014438e5489485
  • TypeScript 编译速度极慢 > 12 秒

    只是把它放在那里看看其他人是否也遇到这个问题 我已经使用 webpack 作为我的构建工具 使用 typescript 构建了一个 Angular 2 应用程序 一切都运行良好 但是我注意到 typescript 编译超级超级慢 我现在只有
  • 来自 JSON 的 Angular 8 动态表单

    我正在尝试从 JSON 模式递归生成动态表单 但我正在努力解决找不到表单控件的问题 这是代码示例 我收到这个错误 错误错误 找不到名称为 createdAt 的控件 我尝试了不同的方法 但仍然存在问题 我知道我错过了一些东西 所以请帮忙 任
  • 如何更改服务器端口3000?

    我刚刚结束了 Angular 2 的教程 我找不到将 localhost 端口从 3000 更改为 8000 的方法 在我的package json文件中有一行 start concurrent npm run tsc w npm run
  • Plesk Windows 部署 Node.js

    我创建了一个以 Node js 作为后端的 Angular 项目 这是服务器文件结构 Home directory httpdocs node hm dist browser folder server folder server js p
  • Angular 无法检测到从 Ngxs 状态发出的 Http 请求(区域相关问题)

    我正在使用 ngx progressbar 它可以很好地处理从服务 组件或解析器内部启动的 http 请求 请注意 在 http 请求期间不需要手动触发进度条 通过服务等 它是自动触发的 不幸的是 当从 NGXS State 中发出 htt
  • 如何使 Angular2 Service 单例?

    我正在尝试在我的应用程序中实现身份验证防护 IE 只有经过身份验证的用户才能访问我的应用程序的某些路由 我正在遵循给出的意见here https angular io docs ts latest guide router html 用户登
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • ngmodel与Angular2中复选框的动态数组绑定

    我有一个 Angular 2 组件 其中我从数组生成复选框列表 现在我需要根据选中的复选框填充不同的数组 这应该是双向绑定 这意味着如果复选框的值已在数组中 则必须已经检查了复选框 我在 Angular 1 中使用了一个名为 checkli
  • 模块“node_modules/@angular/core/core”没有导出成员“OpaqueToken”

    node modules ionic cloud angular dist es5 index d ts 打字稿错误 模块 home ritzylab ionic code 20 11 munshiji247 ionic node modu
  • 无法以角度正确导入 fireStore 模块

    我在运行 Angular 项目时收到此错误 这可能意味着库 angular fire firestore 声明 AngularFirestore 尚未被 ngcc 正确处理 或者 与 Angular Ivy 不兼容 检查是否有较新的版本 由
  • Angular Grid Ag-Grid,使列可动态编辑

    好吧 标题看起来和其他帖子很相似 Angular Grid ag grid columnDefs 动态改变 https stackoverflow com questions 31743534 angular grid ag grid co
  • Typescript:按值检查对象是否存在于数组中

    我有这个数据 roles roleId 69801 role ADMIN roleId 69806 role SUPER ADMIN roleId 69805 role RB roleId 69804 role PILOTE roleId
  • 浏览器中缺少 Angular 12 源地图

    我们已经升级到角12最近遇到一个问题 即浏览器源映射丢失 因此我们无法调试我们的组件文件 因为没有任何组件文件 谁能建议我缺少什么 Angular 12 更改了默认的 ng build 以使用 生产 配置 你想要 sourceMap 所以尝
  • Angular 2在实例化子组件之前解析根组件

    当我刷新网络应用程序时 我希望它在实例化任何组件或路由之前请求潜在的登录用户数据 如果找到用户的数据 我想将其注入到我的所有其他子组件所依赖的服务中 场景 假设我有 3 个组件 应用程序 ROOT 主页和关于 如果我将此代码放在 About

随机推荐

  • NamedScope 和垃圾收集

    这个问题首先是在 Ninject Google Group 中提出的 但我现在发现 Stackoverflow 似乎更活跃 我使用 NamedScopeExtension 将相同的 ViewModel 注入到 View 和 Presente
  • 具有多个间隔的序列

    seq只能使用单个值by范围 有没有办法矢量化by 即使用多个间隔 像这样的事情 seq 1 10 by c 1 2 会回来c 1 2 4 5 7 8 10 现在 可以使用例如来做到这一点seq 1 10 by 1 c T T F 因为这是
  • 升级到 NPM 5.4.1 后,在不删除 node_modules 的情况下无法运行“npm install”

    我已将 NPM 从 5 3 0 升级到 5 4 1 之后 该命令似乎npm 安装仅当我删除后才有效节点模块 当我尝试重新运行安装时 收到以下错误消息 之后 如果我再次删除节点模块 命令运行安装作品 once PS C source webs
  • iOS 通讯软件 SDK

    我正在寻找在我当前的 iPhone android 应用程序中实现应用程序内消息程序 要求是它必须免费 实时并提供推送通知 我已经研究过自己创建系统 但注意到很多应用程序实现了非常相似的概念 所以我认为 SDK 包装器可用 以下是使用要实现
  • 我可以在 Web 配置中设置应用程序池吗?

    我使用 IIS 7 0 我想知道如何在 Web 配置文件中设置应用程序池 我认为这是不可能的 为您的应用程序选择应用程序池是一个 设置 问题 而不是一个 配置 问题
  • jQuery Mobile 导航栏中每行超过 5 个项目

    我未能成功地寻找一个变量来更改导航栏中单行中的最大项目数 我刚刚开始使用 jQuery Mobile 尝试创建一个包含大约 7 个单字母项目的导航栏 当存在超过 5 个项目时 导航栏会自动换行 这对于我的项目来说是不可取的 谁能指出我的代码
  • 简单的 Java Hangman 分配

    我被困在一个类的 Java 作业中 我们需要制作一个 Hangman 游戏 但是一个非常基本的游戏 这是 Java 类的介绍 基本上 我有一个由某人输入的单词 另一个人必须猜测该单词 但他们看不到该单词 因此它会像这样显示 如果该单词是 a
  • 如何在我们的应用程序中给出 zend 库路径? (在 zend 框架 2.3 中)

    我已经在本地计算机上安装了 zend 骨架应用程序 我正在ubuntu上工作 我是手动安装的 没有使用composer 我已经在我的 httpd conf 中给出了 ZF2 PATH zend 库路径 如下所示
  • 如何比较 Django 中的两个日期时间字段

    我用过datetime datetime now 用于存储datefield在我的模型中 另存为2016 06 27 15 21 17 248951 05 30 现在我想比较一下datefield与datetime从前端获取的值 例如Thu
  • 是否可以使用 NumPy 重现 MATLAB 的 randn() ?

    我想知道是否有可能准确地重现整个序列randn MATLAB 与 NumPy 的结合 我用 Python Numpy 编写了自己的例程 它给我的结果与其他人编写的 MATLAB 代码有些不同 而且由于随机抽取不同 我很难找出它的来源 我已经
  • reshape 的输入是一个具有 2 *“batch_size”值的张量,但请求的形状具有“batch_size”

    我想使用带有张量流后端的 Keras 顺序模型制作 RNN 当我实现以下代码时 batch size 8 batch inputshape batch size x train shape 1 x train shape 2 print b
  • 如何使用 apache poi 在 java 中解析 MS Word 文档时了解图像或图片位置

    HWPFDocument wordDoc new HWPFDocument new FileInputStream fileName List
  • onCreateContextMenu 未被调用

    看起来 onCreateContextMenu 根本没有被调用 在我的 ListActivity 的 onCreate 中 我有 list getListView registerForContextMenu list 我知道这是多余的 而
  • JavaScript 中的日期减法

    我有两个接受的文本框Start Date and End Date分别采用 YYYY MM DD 格式 如果用户选择的结束日期超出开始日期 50 天 我需要提醒他 这是我到目前为止所拥有的 var startDate new Date do
  • SQL Server 在执行期间是否内联展开视图的 sql?

    假设我有一个 假设的 表 名为Table1有 500 列 有一个视图称为View1这基本上是 select Column1 Column2 Column500 ComputedOrForeignKeyColumn1 from Table1
  • 动画面部图像 - 使用扭曲?

    我计划在 Android 和 Iphone 中制作类似的应用程序 如下所示 http www motionportrait com en technology http www motionportrait com en technolog
  • Flotr x 轴日期/时间

    我在用着flotr在我的应用程序中 我需要一些简单的方法来在 x 轴上显示日期 我知道 flotr 能够通过以下方式在 x 轴上显示时间 xaxis mode time min gt max gt timeFormat gt noTicks
  • html css Gif 动画

    我有一个 gif 播放一次动画 它不循环 我也不希望它循环 我有 2 张图片 1 png 和 1 gif 动画 我希望每次鼠标悬停在 png 图像上时 都会播放 gif 我的问题是 当我将鼠标位置设置在 png 图像上时 gif 会播放一次
  • 提交后更改提交按钮上的文本

    提交后可以更改提交按钮上的文本吗 例如 按钮上有 提交 一词 在用户提交表单后 按钮现在将显示 完成 如果是这样 是如何完成的 Thanks 如果您使用 AJAX 处理表单 则只需在成功回调中更改按钮文本即可 ajax https api
  • display:none 和 *ngIf = 'false' 之间有什么区别?

    The display none是CSS表 它将从 DOM 树中删除元素 这ngIf false 还从 DOM 树中删除元素 他们之间有什么区别 display none https developer mozilla org en US