为什么滚动在我的 Click Listener 中有效,但在 AfterViewInit 中无效?

Why does scrollTo work in my ClickListener but not in AfterViewInit?

我想知道为什么以下方法有效:

scroll(){
    window.scrollTo(0, this.ypos); // works perfectly fine
}

在我的 html.component 中:

<button (click)="scroll()">Scroll</button>

但以下方法不起作用:

ngAfterViewInit(){
    console.log(this.ypos); // is perfectly defined
    window.scrollTo(0, this.ypos); // won't work
}

有谁知道为什么它不起作用? window.scrollTo() 也不适用于 ngOnInit 但为什么呢?

不使用 window 对象,而是使用 angular Viewportscroller 服务滚动到指定位置。

component.ts

   import { ViewportScroller } from '@angular/common';

   constructor(private viewportScroller: ViewportScroller) {}

   ngAfterViewInit(){
    this.viewportScroller.scrollToPosition([0,this.ypos]); 
   }