我们正在尝试滚动到
我们还尝试了其他生命周期钩子,但它们都被调用得太早,没有帮助。有人对此问题有什么好的做法吗?
我们的源代码很简单,因为我们正在尝试实现非常基本的东西: landingpage.component.html
<mat-accordion>
中的特定<mat-expansion-panel>
项目。问题是,ngAfterViewInit()
在手风琴及其面板完全加载之前就被触发了。这意味着在手风琴加载时调用scrollIntoView()
函数,页面大小会随后更改,使我们的滚动操作带我们到页面的错误位置。我们还尝试了其他生命周期钩子,但它们都被调用得太早,没有帮助。有人对此问题有什么好的做法吗?
我们的源代码很简单,因为我们正在尝试实现非常基本的东西: landingpage.component.html
<mat-accordion>
<mat-expansion-panel id="pangel-1">
<mat-expansion-panel-header>
<mat-panel-title>Lorem ipsum</mat-panel-title>
</mat-expansion-panel-header>
<p>
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt...
</p>
</mat-expansion-panel>
<mat-expansion-panel id="panel-2">
<mat-expansion-panel-header>
<mat-panel-title>Lorem ipsum</mat-panel-title>
</mat-expansion-panel-header>
<p>
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt...
</p>
</mat-expansion-panel>
[ ... ] // more panels
</mat-accordion>
landingpage.component.ts
ngAfterViewInit() {
this.scroll("panel-1");
}
scroll(id) {
console.log(`scrolling to ${id}`);
let el = document.getElementById(id);
el.scrollIntoView();
}