在angular 2中获取D3可视化元素的高度属性

在angular 2中获取D3可视化元素的高度属性,angular,d3.js,primeng,Angular,D3.js,Primeng,我目前正在使用Angular 2、Priming和D3创建一个特定的应用程序 对于这个应用程序,我需要一个Priming数据表和一个D3可视化并排放置 HTML结构看起来像这样,Priming的ui-g类处理高度调整,而ui-g-XX类的行为类似于bootstrap的网格系统 <div class="ui-g"> <p-dataTable class="ui-g-4"> Columns... <p-dataTable>

我目前正在使用Angular 2、Priming和D3创建一个特定的应用程序

对于这个应用程序,我需要一个Priming数据表和一个D3可视化并排放置

HTML结构看起来像这样,Priming的
ui-g
类处理高度调整,而
ui-g-XX
类的行为类似于bootstrap的网格系统

<div class="ui-g">
    <p-dataTable class="ui-g-4">
        Columns...
    <p-dataTable>
    <svg class="ui-g-8"> 
        Visualistion...
    </svg>
</div>

柱。。。
视觉化。。。
到目前为止,我没有任何问题。在我的浏览器中,我可以看到p-dataTable和svg元素正确对齐。但是,d3可视化没有正确渲染,基本上,在高度更新之前,可视化是用“旧”高度值(默认svg高度150px)绘制的(红色轮廓显示最终svg大小)

由于priming类在我的代码读取高度值后更新组件高度,所以我尝试使用各种角度生命周期挂钩,看看是否可以找到一个在应用css后允许我获取高度的挂钩,但我找不到一个


所以我的问题是,有人知道我如何在读取组件的高度值之前等待angular渲染整个视图吗?或者,如果有人有更好的建议,我将非常感谢您的帮助。

我只是使用超时来解决一个类似的问题,我需要等待一些d3元素渲染,从中获取属性,然后在顶部渲染更多元素

setTimeout(timer, 1500);
function timer(){... more d3.
因此,在下一层之前,第一个阶段需要1.5秒进行渲染,下一层被包装在计时器函数中


编辑:

您能设置一个plunker来演示问题吗。我不明白你所看到的渲染问题到底是什么。刚刚玩完这个,设法把时间降到150毫秒。。。所以1500是一种方式,但它让我沿着正确的方向思考。