为什么ngOnInit不是第一个生命周期钩子?

12
1个回答

9

ngOnInit() 在第一次调用 ngOnChanges() 后被调用。

这确保了在调用 ngOnInit() 时,与输入绑定的初始值是可用的。而 ngOnChanges() 在输入值更新后被调用。

关于第一个 ngOnChanges()ngOnInit() 的顺序,有很多讨论,但没有任何一个论点被认为足够强大以改变任何事情。


如果第一个 ngOnChangesngOnInit 之后被调用,我可能会遇到什么问题? - Steven Liekens
输入值尚不可用。如果您不需要它们,可以使用构造函数。 - Günter Zöchbauer
4
接受这个解释是有道理的,但我仍然无法想象在 ngOnInit 中可能需要什么样的内容,而这些内容没有初始值就无法实现。我仍然认为更有可能需要从 ngOnInit 中获取一些东西,而不是相反的情况。 - Steven Liekens
1
构造函数在第一个 ngOnChanges() 之前运行。当调用 ngOnInit() 时,输入绑定的初始值已经传递给组件,只有后来从异步调用中获取的内容通常还不可用。 - Günter Zöchbauer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接