1

考虑以下 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

4

1 回答 1

2

首先,我认为尝试依赖于多个组件中生命周期方法的执行顺序和时间是不明智的,因为这种顺序和时间是没有保证的。

即使你在你的开发环境中工作,它也不太可能在其他客户端、所有浏览器以及未来版本的 Angular 上完全以这种方式工作。

简单地依赖父组件的 afterViewInit 生命周期方法会更安全,在此期间可以保证两个子组件将被初始化。

其次,我认为一般建议不要直接访问 DOM,而是通过 Renderer 来访问。使用 jQuery 违反了该建议。您可能应该寻找一种特定于 Angular 的方法来做您需要的事情,而不是使用 jQuery。

于 2019-11-20T01:08:31.900 回答