从角度模板参考变量中拉出值

时间:2017-12-13 00:57:44

标签: angular

我想知道页面上元素的高度,并设置一个间隔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。

1 个答案:

答案 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>