我正在寻找一个概念来实现以下情况:

我有一个父搜索组件,它有一些组件作为视图子项/内容子项,用于显示面和搜索结果.现在我想在应用程序加载完毕后触发搜索,这样用户就不会看到空页面.

我现在的问题是我找不到一个符合我需要的生命周期钩子.方面/搜索结果订阅它们各自的NGOnInit中的搜索结果.所以我需要一个名为after的钩子,所有子组件都已完成初始化.

我在父组件上try 了以下挂钩

  • ngAfterContentInit:在子元素们被叫来ngOnInit之前,这个会被叫来
  • ngAfterViewInit:这个方法有效,但在搜索结果返回后,子视图会被更新,这会导致一个错误,因为在ngAfterViewInit中不允许操作视图的操作

你知道怎么用撞击解决这个问题吗?在我看来,我在这里似乎没有领会到一些基本的东西.

干杯

汤姆

推荐答案

我最终以以下方式使用了ngAfterViewInit()挂钩:

ngAfterViewInit(){
  //stuff that doesn't do view changes
  setTimeout(_=> this.methodThatKicksOffAnotherRoundOfChanges());
}

与设置了实际时间的setTimeout的其他调用相比,这应该是安全的,因为它应该立即启动(并且只影响线程/上下文行为)

Angular相关问答推荐

图像未显示在视图屏幕上-Angular 投影

在Angular 17的本地服务应用程序时禁用SSR

如何将参数传递给Angular 服务

ION标签-从子对象中加载页,保留父对象的S内容

由于ngcc操作失败,Angular扩展可能无法正常工作

Angular 信号 在 effect() 中使用 debounce

如何在Cypress 测试中切换 Angular 选项卡

无法卸载 angular-cli

运行 npm 测试(Angular 2 单元测试)后无法读取未定义的属性 subscribe

Angular 5 Mat-grid 列表响应式

如何在 bootstrap Angular 2 应用程序时调用休息 api

如何从Angular 2 中的按钮单击触发输入文件的单击事件?

visibility:hidden

请求 http.GET 时发送的 Angular2 OPTIONS 方法

在 Angular 2 中打印 Html 模板

Angular - 工作区中未设置配置

angular4的所见即所得编辑器

Angular 5 中 value 和 ngValue 的区别

如何从materialAngular使用分页器?

Angular 9 引入了需要加载的全局$localize()函数