Angular - 还有哪些其他问题会导致offsetHeight保持“0”?

时间:2017-07-02 16:23:53

标签: javascript angular offsetheight

我需要知道渲染元素的高度。我不关心元素是否报告它或父母是否检测到高度。

我一直在研究这个问题,我的第一个根本原因是:host元素必须设置display:block并且我已经完成了。 (我是否在适当的水平上做到了?)

this.nativeElement将很好的信息转储到console.log但是当我尝试以编程方式访问该值时,它出现“0”。

文件:

IMG-fader.component.html

<img [src]='imgSrc' class="item carousel-item" style="width: 100%; display: block;"/>

IMG-fader.component.css

:host {
    display: block;
}

img.carousel-item {
    position: absolute;
    left: 0;
}

img-fader.component.ts(重要部分)

export class ImgFaderComponent implements AfterViewInit {
  @ContentChildren(ImgFaderComponent, {read: ElementRef}) imgList: QueryList<ElementRef>;

  constructor() {}

  ngAfterViewInit() {
    this.imgList.forEach(img => console.log('Img: ', img.nativeElement.children[0].offsetHeight));
  }
}

1 个答案:

答案 0 :(得分:0)

如果有人仍在为图像offsetHeight解决类似问题,我发现如果使用 setTimeout 函数包装命令以获取offsetHeight,则可以得到图像高度(和宽度I应该)。

之所以发生这种情况,是因为异步命令运行到下一个周期,因此映像已加载。