【发布时间】:2019-08-21 16:56:27
【问题描述】:
我有一个条目列表。当我单击此类条目时,完成了 HTTP 请求,数据将被加载并显示在表格中。到目前为止一切顺利。
现在我尝试创建一个导出函数来一次输出所有表。抽象的代码如下所示:
this.objectlist.forEach(entry => {
this.getDataFromHTTP(entry).subscribe(response => {
tabledata.push(this.getTableDOM());
})
})
在函数getTableDOM() 中,我执行let table = document.getElementsByClassName(data.classname); 之类的操作。当我单击每个条目时,代码本身就会运行。但它在forEach() 中不起作用。
真正的问题是getTableDOM() 返回一个空的结果,因为DOM 在被调用时还没有准备好。
所以我的问题是:我如何才能等到 DOM 更改完成后再致电 getTableDOM()。或者,也许我实现目标的方法是完全错误的。但如果是这样:否则我该怎么做?
感谢您的帮助! 拉尔斯
【问题讨论】:
-
你试试`ngAfterViewInit()`
-
ngAfterViewInit()在初始视图准备就绪后只调用一次。在我的例子中,当我点击导出按钮时,视图被渲染并且ngAfterViewInit()已经被调用了。 -
您介意在 stackblitz.com 上创建一个演示示例吗?这可以给我们更多的洞察力
-
@ShashankVivek,我想过,但是代码对于演示来说有点太复杂了,简化也不是那么容易。不幸的是!
-
@LarsHagen 为什么不使用承诺来保持加载 DOM 直到收到数据。