因此,当前在highlight
上调用此函数ngOnInit
,但是放入DOM
的文本大约需要一秒钟的时间才能写入DOM
。
因此,当函数运行时,它会返回null
并期望那里的文本。当document.getElementById('scrollable')
不 === null
进行操作时,如何运行此功能。
到目前为止,让它运行的唯一方法是超时800ms
,但这并不好,因为某些人的互联网速度比其他人慢,因此如果互联网或计算机花费的时间更长,则会导致问题加载页面。
我尝试了几种不同的方法,但是没有一种起作用。如果有人有什么好的建议,请随时告诉我。
highlight(words) {
const high = document.getElementById('scrollable');
const paragraph = high.innerHTML.split(' ');
}
}
当前使用Angular 6。
HTML:https://gist.github.com/ElAndy94/fa78b5b25a73716e2c32045c6c6be1ff
TS:https://gist.github.com/ElAndy94/85950e0e84aad30a72d3b91faa7d6278
答案 0 :(得分:1)
我建议您看看Angular Component Life Cycle。您应该使用AfterViewInit
钩子来确保您的视图已初始化。
import { Component, AfterViewInit } from '@angular/core';
@Component({...})
export class MyOwnComponent implements AfterViewInit {
constructor() { }
ngAfterViewInit() { // Here your view is checked and initialized.
this.highlight();
}
highlight(words) {
const high = document.getElementById('scrollable');
const paragraph = high.innerHTML.split(' ');
...
}
}