angular - Angular/SVG - 在页面加载时捕获元素宽度
问题描述
我在这里有一个演示
这是一个角度的 D3 图表。
调整窗口大小时图表会调整大小,使用调整大小时捕获的窗口宽度重新绘制图表
@HostListener('window:resize')
onWindowResize() {
this.w = this.elementView.nativeElement.offsetWidth;
this.width = this.w - this.margin.left - this.margin.right;
d3.selectAll('.bar-opacity').remove()
this.initScales();
this.drawUpdate(this.data);
}
当页面首次加载时,我没有宽度,因为在调整窗口大小时会发生这种情况。
页面加载时svg没有宽度
如何在页面首次加载时捕获 svg 容器的宽度
解决方案
简单地将宽度计算作为ngOnInit
...的第一行
ngOnInit() {
this.w = this.elementView.nativeElement.offsetWidth;
this.width = this.w - this.margin.left - this.margin.right;
...
...似乎修复了页面加载的宽度。
显然,您可能希望将这些计算分解为自己的方法,因为它们在多个地方使用。(干燥)。
推荐阅读
- julia - Julia Flux error: MethodError: no method matching *(::Chain{Tuple{Conv{2,4,typeof(identity),Array{Float32,4},Array{Float32,1}},var"#13#15"}}, ::Int64)
- jpa - 认证失败时,根据用户名是否存在发送不同的应答
- python - 为什么 mypy 确定参数是可选的?
- python - 对 pandas 系列“any”、“max”、“sum”与 python 内置函数的性能好奇
- php - 如何在 Laravel 函数中传递变量
- java - 通过 lambda 表达式映射后获取更新的对象
- python - Tabula-py read_pdf_with_template() 方法
- c# - Windows 服务中的路径 oa 文件
- javascript - ajax 选择 HTML 的特定部分
- arrays - 如何在laravel中的该数组之前获取3个数组