angular实际上是如何触发生命周期挂钩的?

angular实际上是如何触发生命周期挂钩的?,angular,lifecycle,Angular,Lifecycle,在组件的生命周期中,我们有不同的接口跟踪组件的不同阶段 生命周期,例如OnInit、OnChanges、OnDestroy等 在运行时,angular如何触发这些方法 例如,ngOnChanges()在@输入数据更改时触发 现在我假设你有这个逻辑 1-只要角度检测到@输入数据中的变化 2-角度检查此组件类是否实现OnChanges 3-如果为真,则触发ngOnChanges() 每个生命周期挂钩都有一些逻辑 这就是角度触发器生命周期挂钩的方式吗?用下图记录 这说明了生命周期挂钩的层次结构好问题

在组件的生命周期中,我们有不同的接口跟踪组件的不同阶段
生命周期,例如OnInit、OnChanges、OnDestroy等
在运行时,angular如何触发这些方法

例如,ngOnChanges()@输入数据更改时触发
现在我假设你有这个逻辑 1-只要角度检测到@输入数据中的变化
2-角度检查此组件类是否实现OnChanges
3-如果为真,则触发ngOnChanges()

每个生命周期挂钩都有一些逻辑
这就是角度触发器生命周期挂钩的方式吗?用下图记录


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

好问题!Angular的生命周期挂钩由库[]实现

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

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

Angular团队显然编写了冗长的代码,因此我不认为我需要解释以下调用
ngOnInit()
的语句的逻辑:


可以找到这个函数的漂亮的typescript版本。

您看到文档了吗?
if ((view.state & ViewState.FirstCheck) && (def.flags & NodeFlags.OnInit)) {
    directive.ngOnInit();
}