浅谈angular4生命周期钩子

发布时间 - 2026-01-11 03:07:06    点击率:

理解

Angular提供了生命周期钩子,把这些关键生命时刻暴露出来,赋予我们在它们发生时采取行动的能力。可以将钩子函数理解为在合适的时候做合适的事情。

钩子函数

ng4主要提供了8个钩子函数:

1、ngOnchanges

@input属性(输入属性)发生变化时,会调用。非此属性,不会调用。

当输入属性为对象时,当对象的属性值发生变化时,不会调用,当对象的引用变化时会触发。

先于ngOnInit调用。

2、ngOnInit

只执行一次,dom操作可放在其中。(最常用)

3、NgDocheck

每次发生变更检测时会被调用

ngDoCheck() 是Angular中的变更检测机制.它由 zone.js 来实现的.其行为是只要你的Angular中的某个组件发生异步事件.就会检查整个组件树,以保证组件属性的变化或页面的变化是同步的.所以 ngDoCheck() 的触发相当频繁的.并且是我们无法预料到的.也许我们在页面上的一个无意识操作,就会触发几个甚至几十个的 ngDoCheck() 生命周期钩子.

4、ngAfterContentInit

在组件内容初始化之后调用

5、ngAfterContentChecked

内容投影:父组件写在子标签之间的内容会被渲染到子模板的ng-content中去,类似vue的slot

组件及子组件每次检查内容时调用

当父子组件都有该钩子时,父组件先执行。

6、ngAfterViewInt

组件相应的视图初始化之后调用

7、ngAfterViewChecked

组件及子组件每次检查视图时调用

当父子组件都有该钩子时,子组件先执行。

ngAfterViewChecked与ngAfterViewInt中不允许修改绑定的属性(@input属性),否则抛出异常

8、ngOnDestory

销毁,事件解绑。

3.执行顺序

父组件:

组件模板

<div class="panel-body">
 <input type="text" [(ngModel)]="name">
 {{name}}
  <son [name]="name"></son>
</div>

组件

@Component({
 selector: 'father',
 templateUrl: './father.component.html',
 styleUrls: ['./father.component.scss']
})
export class FatherComponent implements OnInit {
 public name:string;
 constructor() { }
 ngOnInit() {
 console.log("父组件ngOninit");
 }
 ngOnchanges(){
 console.log("父组件ngonchanges");
 }
 ngDoCheck (){
 console.log("父组件ngDocheck")
 }
 ngAfterContentInit(){
 console.log("父组件ngAfterContentInit")
 }
 ngAfterContentChecked(){
 console.log("父组件ngAfterContentChecked")
 }
 ngAfterViewInit(){
 console.log("父组件ngAfterViewInit")
 }
 ngAfterViewChecked(){
 console.log("父组件ngAfterViewChecked")
 }
}

子组件

@Component({
 selector: 'son',
 templateUrl: './son.component.html',
 styleUrls: ['./son.component.scss']
})
export class SonComponent implements OnInit {
 @Input() name:string;
 constructor() { }

 ngOnInit() {
 console.log("子组件ngOninit");
 }
 ngOnChanges (){
 console.log("子组件ngonchanges");
 }
 ngDoCheck (){
 console.log("子组件ngDocheck")
 }
 ngAfterContentInit(){
 console.log("子组件ngAfterContentInit")
 }
 ngAfterContentChecked(){
 console.log("子组件ngAfterContentChecked")
 }
 ngAfterViewInit(){
 console.log("子组件ngAfterViewInit")
 }
 ngAfterViewChecked(){
 console.log("子组件ngAfterViewChecked")
 }
 
}

看打印结果:

当在父组件的input中输入内容时,会打印如下结果:

看到有人说只有当使用内容投影时才会调用ngAfterConentChecked,当上面的里面的代码很显然是没用ng-content的,不知道该怎么解释这个ngAfterConentChecked。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# angular4生命周期钩子  # angular  # 生命周期钩子  # Angular2生命周期钩子函数的详细介绍  # 浅谈对Angular中的生命周期钩子的理解  # 浅谈angular2 组件的生命周期钩子  # 一篇文章快速了解Angular和Ionic生命周期和钩子函数  # 就会  # 都有  # 几个  # 放在  # 人说  # 中去  # 来实现  # 写在  # 时才  # 绑定  # 几十个  # 抛出  # 中不  # 最常用  # 大家多多  # 不知道该怎么  # 它由  # 以保证  # ngAfterContentInit  # ngOnDestory 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何确保FTP站点访问权限与数据传输安全?  常州企业网站制作公司,全国继续教育网怎么登录?  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  智能起名网站制作软件有哪些,制作logo的软件?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  如何获取免费开源的自助建站系统源码?  使用豆包 AI 辅助进行简单网页 HTML 结构设计  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Python制作简易注册登录系统  如何在阿里云虚拟服务器快速搭建网站?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Python文件操作最佳实践_稳定性说明【指导】  个人摄影网站制作流程,摄影爱好者都去什么网站?  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  高防服务器租用首荐平台,企业级优惠套餐快速部署  如何快速查询网址的建站时间与历史轨迹?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Swift中循环语句中的转移语句 break 和 continue  Python进程池调度策略_任务分发说明【指导】  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  js实现点击每个li节点,都弹出其文本值及修改  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  北京网站制作的公司有哪些,北京白云观官方网站?  中国移动官方网站首页入口 中国移动官网网页登录  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  ,网页ppt怎么弄成自己的ppt?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  如何在香港服务器上快速搭建免备案网站?  php485函数参数是什么意思_php485各参数详细说明【介绍】  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  如何在云主机快速搭建网站站点?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  北京专业网站制作设计师招聘,北京白云观官方网站?  如何在IIS中配置站点IP、端口及主机头?  *服务器网站为何频现安全漏洞?  iOS验证手机号的正则表达式  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  php json中文编码为null的解决办法  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  制作电商网页,电商供应链怎么做?  如何用wdcp快速搭建高效网站?