我想知道页面上元素的高度,并设置一个间隔div来适应。 "直观"这里要做的是使用template reference variable。
1.98
这实际上几乎可以正常工作 - 你可以正确地将<div class="spacer" [style.height.px]="footer.clientHeight"></div>
<div class="footer" #footer></div>
插入到DOM中,除了(a)当页脚改变高度时这个值似乎没有变化 - 它只是保持为初始值和( b)相关地,系统然后抛出{{footer.clientHeight}}
类型的错误,这个错误非常具有描述性,但并不特别表明修复。
所以问题是:有没有一个体面的方法来做到这一点?这里的扭曲是我的页脚div有条件地用ExpressionChangedAfterItHasBeenCheckedError
渲染,我认为这会增加我的困境。
我也在viewChild戳了一下,但这似乎没什么帮助 - 我想要一个可以将clientHeight(或其他一些高度测量)拉出元素的observable。
答案 0 :(得分:1)
当您专门使用DOM时,有时您在创建变量和引用的顺序方面处于优势地位。根据您的描述,看起来您的spacer在#footer
引用可用之前呈现,然后一旦可用,它就会更改已经检查过的spacer
的值。我猜你在打印{{footer.clientHeight}}
的输出时它是否在footer
元素下面?您可以尝试暂停渲染spacer
,直到使用*ngIf
简单地渲染页脚。
<div class="spacer" *ngIf="footer" [style.height.px]="footer.clientHeight"></div>
<div class="footer" #footer></div>