angular - 如何在 Angular 7 中等待直到 DOM 准备就绪?

标签 angular rxjs

我有一个条目列表。当我点击这样一个条目时,一个 HTTP 请求就完成了,数据将被加载并显示在一个表格中。到目前为止一切顺利。

现在我尝试创建一个导出函数来一次输出所有表。抽象代码如下所示:

this.objectlist.forEach(entry => {

    this.getDataFromHTTP(entry).subscribe(response => {
        tabledata.push(this.getTableDOM());
    })

})

在函数 getTableDOM() 中,我做了类似 let table = document.getElementsByClassName(data.classname); 的操作。当我单击每个条目时,代码本身就会运行。但它在 forEach() 中不起作用。

真正的问题是 getTableDOM() 返回一个空结果,因为调用它时 DOM 还没有准备好。

所以我的问题是:在调用 getTableDOM() 之前,如何才能等到 DOM 更改完成。或者也许我实现目标的方法是完全错误的。但如果是这样:否则我该怎么办?

感谢您的帮助! 拉斯

最佳答案

请看这个DEMO我已经创建了,希望它能让你朝着正确的方向前进。就像其他人从您提供的内容中提到的那样,很难获得全貌。我想你要找的是类似 OnChanges 的东西,我在下面包含了相关的示例代码。我还在演示中包含了一个 forkJoin示例。

import {
  Component,
  Input,
  OnChanges,
  SimpleChanges
} from '@angular/core';

@Component({
  selector: 'on-change',
  template: `
        <pre>
            {{changes | json}}
        </pre>
    `
})
export class OnChangeComponent implements OnChanges {
  @Input() data: any;
  changes;
  constructor() {}

  ngOnChanges(changes: SimpleChanges) {
    this.changes = changes;
  }
}

关于angular - 如何在 Angular 7 中等待直到 DOM 准备就绪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55439643/

相关文章:

node.js - RxJS if-else 就像管道过滤

javascript - 在typescript中使用rxjs时出现错误

javascript - 测试 Angular 可观察对象是否发出值或序列

angular - 将对象添加到可观察数组的开头

node.js - Redis 与 NodeJS - 创建一组十个项目

css - 从 html 属性绑定(bind)设置 div 背景图像

javascript - 如何在 Angular2 应用程序中使 Facebook og 标签动态化?

Angular 5 (Ionic) JSONP 请求

angular - 如何使用 angular2_material -dart 和 angular2-dart

angular - 测试失败 Action - 弹珠 - ngrx 效果