Мне нужно изменить innerHTML элемента, и я решил создать директиву атрибута для выполнения этой задачи.Я создал следующий пример, чтобы проиллюстрировать, что я в основном пытаюсь сделать:
StackBlitz
Я использовал интерполяцию для установки содержимого абзаца:
<p changeContentDirective>{{content}}</p>
'changeContentDirective' изменяет innerHTML абзаца, если над ним наведено использование.
this.el.nativeElement.innerHTML = 'modified by directive';
Я также установил функцию для выполнения через 5 с, которая изменит значениесвойство 'content':
ngOnInit() {
setTimeout(() => {
console.log('timeout: modify content');
this.content = 'modifed after timeout'
}, 5000);
}
Если я не наведу указатель мыши на абзац, содержимое меняется через 5 с.Странная часть заключается в том, что содержимое не изменяется обработчиком из setTimeout, если я наведите курсор мыши на элемент (очевидно, до того, как обработчик будет выполнен)
Я не уверен, почему это происходит, кажется, что после того, как яизмените innerHTML программно, изменение свойства «content» из AppComponent не окажет никакого влияния на HTML, отображаемый в абзаце.
В реальном приложении, над которым я работаю, структура более сложная,Мне не нужно изменять innerHTML абзаца, но innerHTML различных td, принадлежащих таблице (Kendo Grid), из-за этого я не думаю, что могу использовать канал.
MyВопрос заключается в том, могу ли я изменить innerHTML элемента в директиве путем доступа к нативному элементу, а также почему возникает эта странная проблема?
Заранее спасибо