为了账号安全,请及时绑定邮箱和手机立即绑定

为什么ViewChild ElementRef在ngAfterViewInit中的宽度和高度为0?

为什么ViewChild ElementRef在ngAfterViewInit中的宽度和高度为0?

交互式爱情 2021-03-29 16:18:21
我正在尝试根据元素的宽度和高度进行一些计算,但是由于某些原因,这些计算在AfterViewInit生命周期挂钩中都不立即可用(均为0)。尽管setTimeout确实可以解决问题,但我不喜欢它。是什么原因造成的?有没有更优雅的解决方案?@ViewChild('main') mainDiv: ElementRef;ngAfterViewInit() {  this.printMainHeight() // 0  // with setTimeout width is correctly retrieved ...  setTimeout(() => this.printMainHeight()) // 430}printMainHeight() {  console.log(this.mainDiv.nativeElement.getBoundingClientRect().height)     }的HTML<div class"main" #main>  <app-toolbar></app-toolbar>  <app-list></app-list></div>
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

有必要使用ngAfterViewChecked生命周期挂钩,而不是ngAfterViewInit。正如Angular的文档所说ngAfterViewChecked()

在Angular检查组件的视图和子视图/指令所在的视图之后响应。

在ngAfterViewInit()及其之后的每个ngAfterContentChecked()之后调用。


查看完整回答
反对 回复 2021-04-22
  • 2 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信