angular - 属性更改时重新呈现视图后的生命周期挂钩
问题描述
我有一个组件(标注气泡),它需要根据其原生元素大小来计算它的位置。默认情况下它是隐藏的,因此元素没有大小。
当我将隐藏绑定更改为 false 时,我在哪里挂钩事件,我可以在渲染后测量原生元素的大小?
@Component({
selector: 'app-callout',
template: `<div #content class="callout-content">
<div class="callout-header">
<div class="title">{{title}}</div>
</div>
<div style="height: 100%; flex:1">
<ng-content></ng-content>
</div>
</div>`
})
export class CalloutComponent {
@HostBinding('hidden')
@Input()
isHidden:boolean = false;
@ViewChild('content') content: ElementRef<HTMLDivElement>
ngAfterViewChecked(){
//called after isHidden is changed, but
//NOT OK: content.nativeElement.offsetWidth == 0;
setTimeout(() => {
// OK: content.nativeElement.offsetWidth == 100;
// but I would like to get rid of this timer workaround
}, 100);
}
show(){
this.isHidden = false;
}
}
解决方案
推荐阅读
- java - 当我们在实体中使用最终字段时?
- sql - 如何在 MS Access SQL 上选择最多两列并按站分组
- android - 将异步作为服务运行
- python - 如何使用参数执行我的 Python 脚本?
- java - 如何在序列中延迟更改按钮颜色
- c# - 我可以将所有字符串默认为 C# 6.0 插值字符串连接吗?
- keras - 由于形状错误,Keras fit_generator() 无法正常工作
- regex - Nginx 正则表达式示例获取两个逗号之间的值
- memory-management - 如何调试/查找 cma 分配失败原因?
- excel - 在 Select Case 语句中使用值列表