这是页面首次加载时的控制台。
因此,在此生命周期中调用的组件具有其自己的功能:
1)构造函数:默认方法,当类被实例化时调用。
2)ngOnChanges:在创建新组件时执行,当绑定的@Input属性之一更改时执行,它是唯一带有参数(称为SimpleChanges)的钩子。
3)ngOnInit:组件初始化后调用。这不允许组件在DOM上可见。这在构造函数之后运行。
4)ngDoCheck:在变更检测运行时运行。即使没有任何更改,它也会运行,甚至是发生的事件,以确保是否有更改。(例如:它将在按钮单击事件之后运行,无论它是否进行任何更改)
5)ngAfterContentInit:在内容(ng-content)投影到视图后调用。
6)ngAfterContentChecked:在检查了每个投影内容后调用。
7)ngAfterViewInit: 在组件视图(和子视图)初始化后调用。
8)ngAfterViewChecked: 每次检查视图(和子视图)时都会调用。
在下面的图片中,当我点击位于左上角的“Recipe Book”导航栏标题链接时,请注意控制台:
我们可以清楚地看到,在最后调用了'ngDoCheck',接着是'ngAfterContentChecked',然后是'ngViewChecked'。如果您注意到,'ngAfterContentInit'和'ngViewInit'仅在内容最终被投影到视图时开始调用。它们与相应的更改无关。ngOnChanges()
在constructor
之后不会被调用,它会在变更检测运行并更新@Input()
后被调用。
同样地,ngDoCheck()
会在变更检测运行时被调用。
ngOnInit()
会在第一次调用ngOnChanges()
后被调用。
@Input()
,那么 ngOnChanges()
就不会被调用(虽然我还没有验证过)。 - Günter ZöchbauerngOnChanges()
在没有 @Input() 的情况下不会被调用吗? - ieXcept