【发布时间】:2018-05-24 05:52:47
【问题描述】:
在我的 Angular 项目中,我有两张桌子。 其中一个表加载了来自服务的数据,并在 ngOnInit 上返回此数据。
我正在计算标题列的宽度并将其应用于另一个表。 我调用 this.resizeColumn() 函数:
ngAfterViewInit() {
this.resizeColumns();
}
还有:
@HostListener('window:resize')
onResize() {
this.resizeColumns();
}
问题是,第一次打开页面时,计算的宽度尚未应用。 一旦我调整窗口大小,两个标题就会匹配。 这个想法是每当表格宽度发生变化时,这个函数也会被调用。 在什么事件或生命周期挂钩之后我应该调用 resizeColumn,以便最初两个表具有相同的列宽?
【问题讨论】:
-
虽然对我来说似乎并不完全重复,但请查看这个问题和接受答案的 cmets stackoverflow.com/questions/47729202/…
-
谢谢。我确实读过它,只是尝试了与接受的答案中相同的代码。但这并不能解决我的问题。因为只要我调整窗口大小,表头就会获取值。我一直在尝试实现这样的东西:link 但正如你所见,小提琴没有这个问题,因为它有 JS。我不知道如何在角度上做同样的事情,以便程序运行后,它会占用这些宽度。
-
在这种情况下,让我们尝试找出问题所在。因此,当您在代码中打开页面时,宽度是否已经正确计算但没有应用它们,或者在您调整大小之前它们不可用?
-
非常感谢!宽度在那里,但问题是:当我刷新页面(或第一次打开)时,表格首先是空的,然后被填满。因此,标题获取表格开始时的宽度。现在,在表格被填满后,源列的宽度明显发生了变化。但是在我调整窗口大小之前,这些更改不会应用于目标标题。有没有办法在调整表格大小以调用函数时收听?这样每当原始表格改变宽度时,就会调用计算函数?