微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ViewChild 返回结果,然后变为未定义Angular 11

如何解决ViewChild 返回结果,然后变为未定义Angular 11

我的 ViewChild 在 NgAfterViewInit 上正确登录,但在那之后返回 undefined。 当它被初始化时,它会正确记录,但是(在我的例子中是调整大小的函数)记录未定义。

HTML:

<div class="hor-nav" #horNav>
<ul [hidden]="!navModule" class="top-nav-module">
  <li *ngFor="let menu of menus; let i = index" class="hor-nav-item" #navItem>
    <a>
      ...some link
    </a>
  </li>
</ul>

JS:

@ViewChild('horNav',{static: false}) horNav: ElementRef; // tried with static: true too


 ngAfterViewInit() {
    console.log('HOR NAV',this.horNav)   // This works just fine: HOR NAV ElementRef {nativeElement: div.hor-nav}
}



ngOnInit() {
   window.addEventListener('resize',this.calculateNavBarWidth);
}

public calculateNavBarWidth() {
  console.log('Offset Width: ',this.horNav) // This returns undefined
}

解决方法

好的,想通了。它是事件监听器。这现在有效:

window.addEventListener('resize',() => this.calculateNavBarWidth());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。