2017-07-14 46 views
1

我正在使用this library在我的应用程序的某些点滚动页面。一切工作都很顺利,直到我添加了与页面滚动同时发生的这一行。Angular CLI;焦点也滚动到输入

this.myInput.first.nativeElement.focus() 

这导致focus()竞争页面滚动。由于我给页面滚动调用pageScrollDurationfocus()显然滚动的持续时间为0,页面跳转到input,而不是平滑滚动那里。

如何确保页面滚动能够平滑地滚动到元素,同时仍然关注它?

回答

2

我能找到解决的办法是包裹

this.myInput.first.nativeElement.focus()

下列要求:

setTimeout(() => { 
    this.myInput.first.nativeElement.focus() 
}, 0) 

这将导致页面滚动顺利发生。

+0

难道你不能使用库提供的'pageScrollFinish'事件来触发焦点吗? –

+0

我研究过这个问题,它的问题是被聚焦的元素与负责滚动的组件不在同一个组件中。 – rmlarsen