我有一个具有可滚动内容的组件。
但是,当我尝试使用ViewChild获取 Angular 可滚动内容的尺寸时,所有值都为零,但是如果我使用jQuery来抓取元素,则会得到正确的值。为什么会这样呢?如何在Angular中获得正确的尺寸?我验证了两者具有相同的元素,但我相信angular可能没有正确的值或元素吗?从控制台中看,根据css类和html名称判断,jQuery和Angular似乎都具有相同的元素。

模板:

<div class="container-fluid px-5 py-5 scrolled-contents" style="display:inline-block" #scrolledContents>

  <div class="row">
  ...content
  </div>
</div>

Controller 代码:
export class ScrollContainer implements OnInit {

  @ViewChild('scrolledContents') private scrollContainer: ElementRef;

  @HostListener("window:scroll", [])
  onScroll(): void {
    const jQueryelement = $(".scrolled-contents")[0];
    const angularElement = this.scrollContainer.nativeElement;
    // angularElement.clientHeight == 0, angularElement.offsetHeight == 0, angularElement.scrollTop == 0, etc
    // jQueryElement.clientHeight == correctValue, jQueryElement.offsetHeight == correct value, jQueryElement.scrollTop == correctValue
  }

请帮忙 ?

最佳答案

Here is a working StackBlitz,我似乎无法重现您的问题。

您是否提供了完整的代码?它是路由组件吗?任何信息都是有用的。

08-07 06:56