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

为什么[hidden]可以,但Angular2中的ngOnInit()不能使用*ngIf?

在Angular2中,ngOnInit()不能使用ngIf的原因是ngIf是一个结构指令,它的作用是根据条件来决定是否渲染或移除DOM元素。而ngOnInit()是一个生命周期钩子函数,它在组件初始化完成后被调用,用于执行一些初始化操作。

由于ngIf是一个结构指令,它会在DOM渲染之前对条件进行判断,并决定是否渲染或移除DOM元素。而ngOnInit()是在组件初始化完成后被调用的,也就是说DOM已经渲染完毕,此时再使用ngIf来控制DOM元素的显示与隐藏已经没有意义。

如果想要在Angular2中实现条件渲染,可以使用其他方式,例如使用属性绑定来控制DOM元素的显示与隐藏。可以在组件中定义一个布尔类型的属性,然后使用属性绑定将该属性与DOM元素的显示与隐藏进行关联。

示例代码如下:

在组件中定义一个布尔类型的属性:

代码语言:txt
复制
showElement: boolean = false;

在模板中使用属性绑定来控制DOM元素的显示与隐藏:

代码语言:txt
复制
<div [hidden]="!showElement">显示的内容</div>

这样就可以根据showElement属性的值来控制该div元素的显示与隐藏。

推荐的腾讯云相关产品:腾讯云云服务器(CVM),产品介绍链接地址:https://cloud.tencent.com/product/cvm

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

相关·内容

angular知识点梳理第二篇-基本语法

angular基本语法,这样有利于后面我们进行梳理别的知识点做一些铺垫 基本语法 常见指令 NgModel NgModel就和vuev-model效果是一致,只是写法会有一些区别,vue可以直接进行使用...,但是在angular我们引入框架一个核心模块FormsModule才可以,该指令就是将数据驱动视图改变!...{{item.id}} 运行效果 NgIf NgIf指令是可以控制页面元素显示与消失,这里和隐藏要区别开,他效果和cssdisplay:none效果是一致,和visibility...:hidden是要区别开,当if判断为false时候,页面上是整个元素都消失了,而不是仅仅隐藏了css样式 在需要使用数据绑定组件进行数据处理 import { Component, OnInit...运行效果 如果这个tag标签不太理解,你可以将它完全当作一个容器,当你需要对一段内容控制逻辑时候但是不知道使用什么元素标签时候就可以使用这个,在html任何场景下都可以使用

2.5K30

当nz-checkbox-group多选框组遇上必选校验

当nz-checkbox-group多选框组遇上必选校验 Angular2 ng-zorro-antd checkbox 今天表单中用到ng-zorro-antd组件多选框nz-checkbox-group...true了,1始终是false,导致无效。...在刷了n+1遍ng-zorro-antd官方文档表单部分后,在“自定义异步校验”中看到这样一句话 : 当使用 响应式表单(Reactive Form) 时, ...nzValidateStatus 会自动从 NgControl 获取数据,也可以手动指定特定 NgControl组件将表单校>验函数校验过程和异步返回结果显示对应error | validating...(pending) | warning | success状态,具体使用方式建议参照本demo ----- NG-ZORRO表单一节文档 本着死马当活马医心点开里面的dome,仔细看了下,同时在实例上试了一下

4.3K20

Angular 从入坑到挖坑 - 表单控件概览

实例对应于一个表单控件,在使用时,通过将控件实例赋值给属性,后续则可以通过监听这个自定义属性来跟踪表单控件值和状态 import { Component, OnInit } from '@angular...通过使用 FormControl 控件 value 属性,可以获得当前表单控件一份数据值拷贝,通过 setValue 方法则可以更新表单控件值 import { Component, OnInit...4.3.3、使用 FormBuilder 生成表单控件 当控件过多时,通过 FormGroup or FormControl 手动构建表单控件方式会很麻烦,因此这里可以通过依赖注入 FormBuilder...(): void { } } 4.3.4、数据有效性验证 同模板驱动表单数据有效性验证相同,在响应式表单同样可以使用原生表单验证器,在设定规则时,需要将模板控件名对应数据值第二个参数改为验证规则...在模板驱动表单,因为不是直接使用 FormControl 实例,因此这里应该在模板上添加一个自定义指令来完成对于控件数据校验 使用 angular cli 创建一个用来进行表单验证指令 ng

18.9K20

AngularDart 4.0 高级-生命周期钩子 顶

SpyDirective可以使用ngOnInit和ngOnDestroy挂钩创建或销毁它探测元素。...间谍指令可以提供对不能直接更改DOM对象洞察。 显然,你不能触摸本地div实现。 您也不能修改第三方组件。 但是你可以监察一个指令。...Angular团队负责人Misko Hevery解释了为什么您应该避免使用复杂构造函数逻辑。 不要在组件构造函数获取数据。您不应该担心当在测试下创建或决定显示之前时新组件会尝试联系远程服务器。...它只调用一次ngOnInit。 您可以期待Angular在创建组件后立即调用ngOnInit方法。 这就是深度初始化逻辑所属地方。...以下AfterContent挂钩根据内容子代(只能通过使用@ContentChild注解属性查询它)值进行更改。

6.2K10

Angular树组件开发

font-family: PingFang SC Regular; white-space: nowrap; text-overflow: ellipsis; overflow: hidden...一般来说,展示数据需要两个属性:Name和Code,Name是该节点在界面上展示文字,他是可以重复,展示时候也会考虑添加一些符合用户阅读习惯信息。...Code是该节点主键,即是使用树组件时判断选中了哪个节点唯一标识。开发过程使用数据结构并不一定恰好是Name和Code,因此允许开发者指定自己数据结构对应功能属性名。...Member是该节点子节点列表。同样我们允许开发者指定属性名。TreeData是用户需要展示数据。 观察html包含两个部分。 class=“TreeNode”实现了传入节点本身样式。...class=“ChildNode”为每个子节点递归调用了树组件。同样注意要把用户指定参数名继续传递下去。

1.3K40

Angular 2 + 折腾记 :(3)初步了解服务及使用

前言 不探究高深理论,只探究实际使用,有更好写法或者经验请指出; 有些暂时没涉及到知识我可能会顺着例子解释; ---- 什么是服务 简言之:就是资源获取,以及通讯逻辑处理地方; Angular2...详情看这个; 【依赖注入:】 【依赖注入:英】 我看github上有些项目的service写很复杂(很重),但是我不大喜欢这样。 我力求service内少处理复杂逻辑。...}复制代码 那么我们应该如何让服务可以正常使用呢?...大致有那么两种; 模块内注入,整个模块内components皆可以使用 import { NgModule } from '@angular/core'; -- 内置 // 除了根模块用...@Inject('vfault') private vehicleFaultService: any) // 这样就可以使用了,且在components内不需要引入对应服务!!!!

1.6K20

Angular2 :从 beta 到 release4.0 版本升级总结

它标记出该模块拥有的组件、指令和管道, 并把它们一部分公开出去,以便外部组件使用它们。 它可以向应用依赖注入器添加服务提供商。 具体请参考官方文档。...进行静态引导.静态方案可以生成更小,启动更快应用,默认优先使用此处因为有些动态计算环境代码,故编译失败,此处手动关闭。 5....'red' : ''}}"内嵌样式失效。 原因:angular(v4.1.1),需使用[ngStyle]属性方式对样式进行设置。...在webstorm里,更改文件不能在浏览器更新输出。 原因:webstorm里面默认启用”safe write”,将保存先存到临时文件。...无法从router里获取RouteParamsAPI。 原因:angular(v4.1.1)使用ActivatedRouteAPI获取路由信息。

8.1K00

Angular 2 + 折腾记 :(2)初步认识angular2,不一样开发模式

---- 基础概念 国内官网--基础 词汇表(又名计算机术语--angular2 & es6 & es7) 速查表:又名demo写法表,里面涵盖了很多写法,相当于一本小字典 关于ng2一堆为什么:...阅读后可以加速你理解程度 NG2架构概览:多读多看-切记切记切记!!!!!!!...绑定赋值条件表达式特殊之处: 不支持: 赋值 (=, +=, -=, ...) new运算符 使用;或,链式表达式 自增或自减操作符 (++和--) 不支持位运算|和& 支持: 逻辑运算(...,let index = index意思是创建一个局部遍历把当前遍历索引保存到你自定义变量index 动态渲染(*ngIf) *ngIf="item" : 比如loading到视图全部渲染就经常用到这个...,当前不在乎低版本可以用[hidden]来控制切换,因为*ngIf这种动态渲染节点还是有一定性能消耗。。

6.2K20

ionic3应该善用组件和指令

angular4提供了很多功能强大内置指令,但在现实情况,这些内置指令可能还不能完全满足实际要求,这时我们就需要编写自定义指令来实现特定要求。...其实ionic3(angualr4)和ionic2(angular2)差不多,和ionic1(angular1)就差别非常大了,可以说基本是推倒了重来。...在angular1时代,组件和指令是一回事,即严格来说,没有组件这概念,只有指令,而到了angular2时代,虽说组件仍是一种特殊指令,已经有一定目的明显区分开来,分别用Directive和Component...其实就是模版指令,如ngIf,当条件为true时,该元素会被添加到DOM。其主要依赖TemplateRef和ViewContainerRef来完成操作。...Renderer来代替ElementRef使用,有兴趣可以自行了解下Renderer 3)使用指令 如果调用页面用了懒加载,在调用指令页面module.ts里导入指令并声明,反之,在app.module.ts

3.5K40

使用angular4和asp.net core 2 web api做个练习项目(三)

在VS解决方案设置多个项目同时启动: AspNetIdentityAuthorizationServer就是authorization server....它地址是 http://localhost:5000 CoreApi.Web作为api, 都已经配置好了.它地址是 http://localhost:5001 Login 登陆 由于我们使用是Identity...登陆需要使用到oidc-client.js所以通过npm安装: npm install --save oidc-client Auth Service 需要登陆服务 auth.service: ng g...这里面使用了C# 7命名Tuple, 非常好用. 差不多可以了, 运行VS. 同时运行angular项目: 1. 首次浏览: 2....刷新, 还是可以取得到登录用户. 但是如果再打开一个浏览器实例就无法取得到登陆用户了, oidc应该是把登陆信息存到了session storage里面.

1.3K80

Angular 结构指令模式 - 它们是什么且怎么使用

这些指令可以添加、移除或者替换元素。结构指令在其名字之前都有 * 符号。 在 Angular ,有三种标准结构化指令。...ngIf 跟 if-else 很类似。 当表达式是 false 时候,*ngIf 指令移除 HTML 元素。当为 true 时候,元素副本会添加到 DOM 。...Angular 我们什么时候需要用结构指令呢? 如果你想在 DOM 添加或者移除一个元素时候,你就应该使用结构指令。 当然,我们还可以使用它们来更改元素 CSS 样式,或者添加事件监听器。...甚至可以使用它们来创建一个之前不存在元素。 最好规则是:当我们正在考虑操作 DOM 时候,那么是时候使用结构指令了。...总结 结构指令是 Angular 很重要一部分,我们可以通过多种方式使用它们。 希望通过本文,读者能更好理解怎么去使用这些指令和什么时候去使用这些模式。 本文为译文,采用意译形式。

3.8K20

Angular快速学习笔记(3) -- 组件与模板

angular提供两种地方存放组件模板 你可以使用 template 属性把它定义为内联, 或者把模板定义在一个独立 HTML 文件, 再通过 @Component 装饰器 templateUrl...它是语法不可或缺一部分 通过 NgIf 进行条件显示 有时,应用需要只在特定情况下显示视图或视图一部分,这个时候使用ngif,同vue.js里v-if <p *ngIf="heroes.length...{{title}} changed 表达式上下文变量是由模板变量、指令上下文变量(如果有)和组件成员叠加而成。...典型语句上下文就是当前组件实例。 (click)="deleteHero()" deleteHero 就是这个数据绑定组件上一个方法。 模板语句不能引用全局命名空间任何东西。...方括号部分不是元素属性名,而由style前缀,一个点 (.)和 CSS 样式属性名组成。 形如:[style.style-property]。

15.2K30

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

---- 前言 这一篇我们带来是关于组件基础使用最后一块,内容投影和Vue插槽很类似,在组件封装时候非常有用,我们一起来体验一下。 正文 1....使用 ng-template 元素,你可以让组件根据你想要任何条件显式渲染内容,并可以进行多次渲染。在显式渲染 ng-template 元素之前,Angular 不会初始化该元素内容。...使用ng-container定义我们投影区块 使用ngTemplateOutlet指令来渲染ng-template元素。 通过内置动态指令*ngIf来控制是否渲染投影。...my-hello组件只在ngOnInit()做日志输出来观察打印情况。...: ContentDirective; } 通过日志可以看到我们在切换容器组件expanded标识时,只有开启状态my-hello组件才会初始化,下面的这个ngIf虽然在页面看不到渲染内容,组件实实在在被初始化过了

52930

nextline函数_在JAVAScannernext()和nextLine()为什么不能一起使用

Java 输入一直是一个坑,本来一直用 Scanner,一直搞不懂换行符啥,就用 BufferReader ,前不久大疆笔试需要持续输入,早忘了 Scanner 怎么写,而那个场景用 Scanner...很好实现 …… 就继续在这里记录一下 Scanner 坑吧 一、next & nextLine 区别next不能得到带有空格字符串 一定要读到有效字符后才可以结束,结束条件是碰到空格、tab 键、...回车符 “\r” 它被丢弃在缓冲区,现在缓冲区,只有一个 \r ,于是 下一次 nextLine 扫描时候就又扫描到了 \r,返回它之前内容,也是啥都没有 “” ,然后再把 \r 去掉, 对于...这个扫描器在扫描过程判断停止依据就是“结束符”,空格,回车,tab 都算做是结束符 而坑点在于 next 系列,也就是下面这些函数:next nextInt nextDouble nextFloat...实际测试,BufferReader 至少比 Scanner 输入快两倍 用 Scanner 是为了循环输入功能,也就是 hasNext() 方法功能 今天忽然想到了可以用死循环来代替,所以,还是继续使用

2.6K10
领券