在组件生命周期中,我们有不同的界面来跟踪组件中的不同阶段 生命周期,例如 OnInit , OnChanges , OnDestroy 等等 在运行时,角度如何触发这些方法?
代表。 @Input 数据更改时触发 ngOnChanges()
现在Angular有这个逻辑 我假设
1-只要角度检测在 @input 数据中发生变化,
2-角度检查此组件类是否实现OnChanges
3-如果为true,则触发 ngOnChanges()
每个生命周期挂钩都有一些逻辑 这是角度触发生命周期钩子的方式吗?
答案 0 :(得分:5)
好问题! Angular的生命周期钩子由 @angular/core
库[source]实现。
为了证明这一点,运行angular cli
项目并在(可选的chrome)开发工具中,在生命周期钩子中放置换行符,如下所示:
刷新页面以捕获断点,从而查看调用堆栈:
Angular团队显然会编写详细的代码,所以我认为我不需要解释调用ngOnInit()
的以下语句的逻辑:
if ((view.state & ViewState.FirstCheck) && (def.flags & NodeFlags.OnInit)) {
directive.ngOnInit();
}
可以找到此函数的好的打字稿版本here。
答案 1 :(得分:1)