【发布时间】:2019-04-27 21:25:31
【问题描述】:
我在页面上有一个大型 ngx-bootstrap 手风琴。当我打开一些较低的手风琴时,我希望它滚动页面,以便打开的手风琴从窗口顶部开始。我用scrollIntoView实现了滚动部分,但现在的问题是在正确的时间执行它。我目前在 ngAfterViewChecked 中执行此操作,但 viewChecked 被多次触发(mousemove、mouseenter 等)。有没有办法仅在 DOM 完成与 angular2+ changeDetection 分开渲染后才触发一段代码?
解决方案
这是开始起作用的解决方案。
constructor(elementRef: ElementRef) {
this.elementRef = elementRef
}
getData(){
this.getService().then(result => {
#do stuff with result
setTimeout(() => this.scrollToBegin());
}).catch((err: any) => {
});
}
scrollToBegin(): any{
this.elementRef.nativeElement.scrollIntoView();
}
【问题讨论】:
-
ngOnInit钩子有什么问题。在显示所有绑定后触发它。更重要的是,它会被触发一次。 -
但是每次打开手风琴时我都需要触发它。当我打开页面时,所有 ngOnInits 都已完成。之后不再调用它。
标签: javascript angular angular2-template