angular - 父级的 ngAfterViewInit 与子级的 ngAfterViewInit

标签 angular

Parent 的 ngAfterViewInit 会一直在 child 的 ngAfterViewInit 之后运行吗?

<Parent>
 <child></child>
<Parent>
从 parent 的 ngAfterViewInit 我向 child 发出一些数据。
在 Child 的 ngAfterViewInit 中,我订阅了数据。但是订阅不是
触发。在我的例子中, child 是一个网格,它在 ngOnInit 中有大量的 api 调用。当我安慰登录时,我发现 Child 的 ngAfterViewInit 是
在父级的 ngAfterViewInit 之后运行。所以当我从
Parent 的 ngAfterViewInit Child 中的订阅者未配置为
它的 ngAfterViewInit 在我从父级发出有效载荷后运行。

最佳答案

是的,ngAfterViewInit父组件将始终在子组件之后运行。
在 Angular 文档中,您可以找到 here关于 ngAfterViewInit据说:

Respond after Angular initializes the component's views and child views, or the view that contains the directive.


所以如果我们相信文档,第一个 ngAfterViewInit将始终从 View 的“最嵌套”可见组件部分调用。
如果您不信任文档 :D 这里是 stackblitz打开控制台并观察。
关于组件间的数据传递,可以随时通过@Input传递数据事情很可能会奏效。
编辑
我在您的评论中看到了附加信息,您可以通过使用 @ViewChild 从父组件与子组件进行交互的另一种方式。 , 如果您使用 @ViewChild 定位子组件您可以从父级 ngAfterViewInit 中的子级调用任何您需要的方法

关于angular - 父级的 ngAfterViewInit 与子级的 ngAfterViewInit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68360062/

相关文章:

angular - Angular 形式控件类型中的枚举?

css - 在 SCSS 文件 Angular 2 中访问组件变量

javascript - 在 Angular 4 中如何使用电话 : in a *ngHref

Angular 6 with bootstrap 4 - 表单验证电子邮件

angular - ionic/Angular 与 Angular 9 不兼容

node.js - NPM 无法安装 @angular/cli 并显示 "File already exists"

javascript - Angular 在渲染时删除前导空白

angular - Jasmine测试中AfterViewInit的生命周期钩子(Hook)

angular - StaticInjectorError - 填充下拉列表

angular - 如何在angular2中使用多个路由器 socket ?