棱角如何实际触发生命周期钩?

时间:2017-06-18 09:02:05

标签: angular lifecycle

组件生命周期中,我们有不同的界面来跟踪组件中的不同阶段 生命周期,例如 OnInit OnChanges OnDestroy 等等 在运行时,角度如何触发这些方法?

代表。 @Input 数据更改时触发 ngOnChanges() 现在Angular有这个逻辑 我假设
1-只要角度检测在 @input 数据中发生变化, 2-角度检查此组件类是否实现OnChanges
3-如果为true,则触发 ngOnChanges()

每个生命周期挂钩都有一些逻辑 这是角度触发生命周期钩子的方式吗?

2 个答案:

答案 0 :(得分:5)

好问题! Angular的生命周期钩子由 @angular/core 库[source]实现。

为了证明这一点,运行angular cli项目并在(可选的chrome)开发工具中,在生命周期钩子中放置换行符,如下所示:

Select line break inside life cycle hook

刷新页面以捕获断点,从而查看调用堆栈:

Catch breakpoint

Angular团队显然会编写详细的代码,所以我认为我不需要解释调用ngOnInit()的以下语句的逻辑:

if ((view.state & ViewState.FirstCheck) && (def.flags & NodeFlags.OnInit)) {
    directive.ngOnInit();
}

可以找到此函数的好的打字稿版本here

答案 1 :(得分:1)

Angular.io记录了如下图片,

enter image description here

这说明了生命周期钩子的层次结构