Как правильно присвоить стили в ngOnInit?
Всем привет, я новичок в ангуляре и у меня возникла проблема.
ngOnInit(): void {
let text = document.getElementById('text') as HTMLElement | null ;
let newDom = '';
let animationDelay = 6;
for(let i = 0; i < text.innerText.length; i++)
{
newDom += '<span class="char">' + (text.innerText[i] === ' ' ? ' ' : text.innerText[i]) + '</span>';
}
text.innerHTML = newDom;
let length = text.children.length;
for(let i = 0; i < length; i++)
{
text.children[i].style['animation-delay'] = animationDelay * i + 'ms';
}
}
IDE подсказывает мне TS2339: Property 'style' does not exist on type 'Element' и я не понимаю по какой причине это происходит. Мне подсказали что получать элемент следует с as HTMLElement, но это не решило проблему.
Ответы (1 шт):
Автор решения: Alexy
→ Ссылка
Явно укажите тип
for (let i = 0; i < length; i++) {
if (text.children[i] instanceof HTMLElement) {
(text.children[i] as HTMLElement).style['animation-delay'] = animationDelay * i + 'ms';
}
}
Либо используйте ViewChild В компоненте
export class AppComponent implements OnInit {
@ViewChild('text', {static: true}) el: ElementRef;
ngOnInit(): void {
const element = this.el.nativeElement;
}
}
В шаблоне укажите ссылку на элемент
<div #text>
...
</div>