【发布时间】:2018-12-11 00:45:28
【问题描述】:
我在我的 Angular 应用程序中使用 element.scrollIntoView()。
当我的点击功能起作用时,我会看到想要的元素。
我的 TS 文件:
elem1;
elem2;
ngOnInit() {
this.elem1 = document.getElementById('elem1');
this.elem2 = document.getElementById('elem2')
}
handleElemScroll(elem) {
// elem.scrollTop = 1000;
elem.scrollIntoView({behavior: 'smooth', block: 'end'});
}
在我的模板中,我使用 mat-nav-list,单击时传递元素的 id 并使用 elem1.scrollIntoView() 或 elem2.scrollIntoView() 将所需的元素显示在视图中(现在将其纳入视野,但理想情况下该元素应位于顶部)。
<div class="new-side-nav">
<mat-nav-list>
<a mat-list-item>
<span (click)="handleElemScroll(elem1)">Go to elem1</span>
</a>
<a mat-list-item>
<span (click)="handleElemScroll(elem2)">Go to elem2</span>
</a>
</mat-nav-list>
</div>
当点击功能起作用时,我可以看到两个元素都在点击时出现(scrollIntoView 起作用)。但是点击行为是不可预测的。有时点击有效并且 handleElemScroll() 函数运行,有时它什么也不做。
关于为什么会发生这种情况的任何线索?
【问题讨论】:
-
我不确定我是否完全理解问题,而是像 handleElemScroll($event) 一样放入 handleElemScroll(CLICK EVENT)。然后从事件中获取一个目标并滚动到它。
-
每次点击都不会触发 on click,当点击发生时滚动事件可以正常工作。
标签: angular-material angular6 angular-components angular-template