考虑以下html:
<html>
<body>
<app-header></app-header>
<app-footer></app-footer>
</body>
</html>
如果我使用app-footer
钩子ngAfterViewInit()
将脚本追加到包含jQuery
的html脚本中,该脚本处理app-header
组件中的元素,是否可以工作?
与app-header
挂钩相比,ngAfterViewInit()
挂钩app-footer
何时执行?
会先执行吗?异步?
答案 0 :(得分:2)
首先,我认为尝试依赖多个组件中生命周期方法执行的顺序和时机是不明智的,因为这种顺序和时机没有得到保证。
即使您在开发环境中正常工作,也不太可能在其他客户端,所有浏览器以及Angular的未来版本中以这种方式正常工作。
仅依赖于父组件的afterViewInit生命周期方法会更安全,在此过程中,可以确保两个子项都已初始化。
第二,我认为通常建议不要直接访问DOM,而应通过渲染器来访问。使用jQuery违反了该建议。您可能应该寻找一种特定于Angular的方式来完成所需的工作,而不是使用jQuery。