全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

浅谈angular4生命周期钩子

理解

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 


相关文章: 宝塔建站后网页无法访问如何解决?  宿州网站制作公司兴策,安徽省低保查询网站?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  ,sp开头的版面叫什么?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  如何用免费手机建站系统零基础打造专业网站?  建站之星ASP如何实现CMS高效搭建与安全管理?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何实现建站之星域名转发设置?  制作证书网站有哪些,全国城建培训中心证书查询官网?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  小型网站制作HTML,*游戏网站怎么搭建?  如何通过VPS搭建网站快速盈利?  如何自定义建站之星模板颜色并下载新样式?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  如何用PHP快速搭建高效网站?分步指南  网站app免费制作软件,能免费看各大网站视频的手机app?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何选择域名并搭建高效网站?  建站之星价格显示格式升级,你的预算足够吗?  建站VPS选购需注意哪些关键参数?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  高防服务器租用指南:配置选择与快速部署攻略  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  ,柠檬视频怎样兑换vip?  如何使用Golang安装API文档生成工具_快速生成接口文档  网站制作难吗安全吗,做一个网站需要多久时间?  视频网站制作教程,怎么样制作优酷网的小视频?  如何确保FTP站点访问权限与数据传输安全?  建站上市公司网站建设方案与SEO优化服务定制指南  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  建站之星与建站宝盒如何选择最佳方案?  文字头像制作网站推荐软件,醒图能自动配文字吗?  ,网站推广常用方法?  Python多线程使用规范_线程安全解析【教程】  建站之星后台密码遗忘或太弱?如何重置与强化?  制作门户网站的参考文献在哪,小说网站怎么建立?  内网网站制作软件,内网的网站如何发布到外网?  宝塔面板创建网站无法访问?如何快速排查修复?  如何高效配置IIS服务器搭建网站?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  建站之星如何开启自定义404页面避免用户流失?  高端云建站费用究竟需要多少预算?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  ,有什么在线背英语单词效率比较高的网站?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何在景安服务器上快速搭建个人网站?  广州营销型建站服务商推荐:技术优势与SEO优化解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。