为了尽可能简单地阐述,这是我的情况:
1)我有一个父组件,它有一个ViewContainerRef来动态加载父组件中的组件。对于我的用例,父组件是一个空的容器页面,根据一组变量动态替换自身为另一个页面。 2)子组件有一个水平滚动的div,类似于以下内容:
每当带有(scroll)监听器的div被滚动时,它都会重新加载父组件,因此滚动位置总是反弹回0,因为它已经重新加载了。
然而,如果我删除(scroll)监听器,则div可以正常滚动。问题是,我想根据水平滚动位置动态更改页面上的项目。
是否有人对嵌入式组件和滚动监听器可能出现的问题有什么想法?非常感谢!
1)我有一个父组件,它有一个ViewContainerRef来动态加载父组件中的组件。对于我的用例,父组件是一个空的容器页面,根据一组变量动态替换自身为另一个页面。 2)子组件有一个水平滚动的div,类似于以下内容:
然而,如果我删除(scroll)监听器,则div可以正常滚动。问题是,我想根据水平滚动位置动态更改页面上的项目。
是否有人对嵌入式组件和滚动监听器可能出现的问题有什么想法?非常感谢!
(scroll)
事件处理程序的存在会在每次滚动div
时触发变更检测。我们应该查看其余的标记和代码,以确定变更检测是否导致组件重新加载。 - ConnorsFan(scroll)
事件处理程序,(2)在构造函数或ngOnInit
中调用setInterval(() => { this.applicationRef.tick(); }, 5000)
,每5秒强制进行一次变更检测,(3)滚动div并检查当变更检测发生时组件是否重新加载。 - ConnorsFan