我正在寻找一个实现以下案例的概念:
我有一个父搜索组件,它有一些组件作为视图子/内容子项,用于显示构面和搜索结果。我现在想要在应用程序加载完成后触发搜索,这样用户就不会看到空白页面。
我现在的问题是我找不到符合我需求的生命周期钩子。构面/搜索结果在各自的ngOnInit中订阅搜索结果。所以我需要一个在所有子组件完成初始化后调用的钩子。
我在父组件上尝试了以下挂钩
> ngAfterContentInit:在对子项调用ngOnInit之前调用此函数
> ngAfterViewInit:这个可以工作,但是在搜索结果返回后,子项的视图会更新,这会导致错误,因为在ngAfterViewInit中不允许操作视图的操作
任何想法如何解决这个问题?对我来说,似乎我没有掌握一些基本的东西。
干杯
汤姆
我最终以下列方式使用ngAfterViewInit()钩子:
ngAfterViewInit(){ //stuff that doesn't do view changes setTimeout(_=> this.methodThatKicksOffAnotherRoundOfChanges()); }
与设置实际时间的setTimeout的其他调用相比,这应该是安全的,因为它应该立即启动(并且只影响线程/上下文行为)