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

Rae*_*laf 3 lifecycle angular

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

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



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

Tom*_*Tom 5

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

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

在生命周期钩子中选择换行符

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

抓住断点

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

if ((view.state & ViewState.FirstCheck) && (def.flags & NodeFlags.OnInit)) {
    directive.ngOnInit();
}
Run Code Online (Sandbox Code Playgroud)

这个功能的好打字版本可以在这里找到.