У меня есть Angular компонент, который выбирает уценку, преобразует его в HTML, а затем вставляет его в DOM. После вставки выполняется еще несколько манипуляций с DOM. Таким образом, шаблон выглядит так:
<div id="fixroot" [innerHTML]="content"></div>
и компонент выглядит так:
content: string;
...
async getPage(url: string) {
try {
this.content = this.mdToHtml(await this.http.get(url, { responseType: 'text'}).toPromise();
setTimeout(() => this.fixupDOM(), 400);
....
fixupDom() {
const el = document.getElementById('fixroot');
// do stuff to the DOM element that are children of el
Использование setTimeout
здесь действительно ужасно, но без него метод fixupDom
не работает, потому что DOM не готов к завершению Promise. Но это должно go.
Мне нужен обратный вызов (вероятно, из HTMLElement el
), который вызывает мою подпрограмму, как только структура DOM готова. Я не смог заставить что-либо работать. Кто-нибудь знает правильную функцию?