我有一项服务,该服务检查元素的位置以确定是否在视图屏幕中。我遇到了一个问题,即服务返回一个“不同”的位置,该位置是我在检查元素时手动计算的位置。 在服务级别,我要做的是以下操作:
let offsetTop = elementRef.nativeElement.offsetTop;
let parent = elementRef.nativeElement.offsetParent;
while(parent !== undefined && parent !== null) {
offsetTop = offsetTop + parent.offsetTop;
parent = parent.offsetParent;
}
我检查了我是否在组件生命周期的错误阶段运行该方法,因此我尝试在(constructor
)onInit
,afterViewInit
,{{1} }。
看起来很奇怪的是,如果我执行afterViewChecked
并且执行相同的操作,我将使用循环执行此操作,则会得到不同的结果,该结果是没有意义的,因为console.log是在此时取方法执行的结果,并期望当时所有元素属性的快照?
顺便说一下,我不确定我在做什么是否正确。我也在谷歌上搜索,发现console.log(elementRef)
也不起作用。
有什么想法吗?