вы можете попробовать с помощью ElementRef
, если вы хотите добавить элемент, который не хотите заменять полным html,
html
<div #Container>
add here
</div>
ts файл
export class AppComponent implements AfterViewInit {
@ViewChild('Container') container: ElementRef ;
content = [
{judul: "Judul 1", isi:"<div id='title_1'>Isinya</div>"},
{judul: "Judul 2", isi:"<div id='title_2'>pranay</div>"},
];
ngAfterViewInit() {
this.content.forEach( (item,index) =>{
this.container.nativeElement.insertAdjacentHTML('beforeend', `<div id="title${index}">${item.judul}</div>`);
this.container.nativeElement.insertAdjacentHTML('beforeend', `${item.isi}`);
});
}
Однако elementref не рекомендуется.
вывод вышеуказанного кода
![enter image description here](https://i.stack.imgur.com/PtWsd.png)
вы можете увидеть его добавление контента после, добавить сюда один за другим
Найти: Рабочая демонстрация
Вместо использования функции в вашем компоненте (она не работает, когда ваш html-шаблон пытается передатьhtml в ваш файл Typscript), вы должны создать трубу, как показано ниже
html.pipe.ts
import { Component, Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
@Pipe({
name: 'html'
})
export class HtmlPipe implements PipeTransform {
constructor(private sanitized: DomSanitizer) {}
transform(value) {
return this.sanitized.bypassSecurityTrustHtml(value);
}
}
и использовать ее как
html
<div *ngFor="let item of content">
<h3 [innerHTML]="item.judul | html ">add</h3>
<div [innerHTML]="item.isi | html "><p>new word</p></div>
</div>
Найти: Рабочая демоверсия