我在我的应用程序中使用Wijmo网格。但是网格最初在屏幕上显示不正确。 第一列是一个复选框,该方法调用this.flex.refresh,它实际刷新并可能重新呈现网格。
因此,最初加载页面时,只显示一个带复选框的单元格。单击它时,将显示完整的网格。 如果我从调用中删除了flex刷新方法,那么它会显示所有内容。
我的假设是在渲染实际网格之前未加载网格的CSS。 (虽然我应该在我的angular-CLI JSON中使用它。)
所以,我想要做的是在页面完全加载时刷新,但我找不到可靠的钩子。
一旦完成所有内容,Flex变量就会被赋值。(它在构造函数或ngInit中未定义)。
所以,我试图找到一个可靠的钩子,它会出现。
我尝试过ngAfterViewInit,ngAfterContentInit,但那里未定义。
如果我这样做
ngAfterViewInit() {
setTimeout(() => {
this.flex.refresh();
}, 500);
}
然后它有时会起作用,有时却不起作用。在setTimeout中,我可以在大多数时间找到flex变量,有时不会。所以这似乎有点不可靠。 我想知道是否有一个钩子我可以调用该方法。在页面完全初始化后调用的挂钩。 AfterViewInit&在初始化开始但未完成之后,似乎调用了afterContentInit。
答案 0 :(得分:0)
您可以在ngAfterViewChecked()
中拨打相同的电话。正如文档所述,在以下情况下调用它:
Respond after Angular checks the component's views and child views.
Called after the ngAfterViewInit and every subsequent ngAfterContentChecked().
答案 1 :(得分:0)
根据文档,最后一个钩子是ngAfterViewChecked
。
但是你需要仔细看看这个:
如果挂钩立即更新组件的数据绑定注释属性,则Angular会抛出错误(试试吧!)。 LoggerService.tick_then()推迟了浏览器JavaScript周期的一个回合的日志更新,这已经足够长了。