Кажется, что элемент с директивой [innerHtml] просто добавляет объявленную строку html внутри этого элемента, и ничего более;
через этот stackblitz я пытался добавить что-то внутри такого элемента, но безуспешно;
<div [innerHTML] = "safeHtml(item.isi)"><p>new word - will not show</p></div>
Есть ли способ добавить еще немного HTML внутри элемента с помощью директивы [innerHtml]? Другими словами, как я могу заставить работать stackblitz в примере?
пожалуйста, посмотрите обновленные и дайте мне знать, если есть какие-либо проблемы



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


почему вы используете [innerHTML], если ваш item.isi не является элементом html; мы используем innerHTML для рендеринга html-результата; например, если ваш item.isi - <p>My name</p>; если это не элемент html, без использования innerHTML, вы можете просто использовать {{item.isi}} внутри своего div, чтобы вы могли также отображать другие элементы html
вы можете попробовать использовать 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 не рекомендуется.
вывод вышеуказанного кода
вы можете видеть, как он добавляет контент после добавить сюда один за другим
Найти: Рабочая демонстрация
Вместо использования функции в вашем компоненте (она не работает как ваш 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>
Найти: Рабочая демонстрация
Меня интересует, как вы также можете применить стили к html в директиве? стиль шрифта css в настоящее время не применяется.
@Danoram - не понимая, можете ли вы предоставить stackbiz, потому что я не использую директивный подход,
Я имел в виду директиву атрибута [innerHTML]. Я нашел ответ в другом вопросе о переполнении стека. dw
@Danoram - [innerHTML]. не является директивой, OP хочет добавить html в данный элемент, не хочу заменять, поэтому я дал обновленное решение Element ref ...
* Привязки свойств. не имеет значения, я нашел ответ на это плюс директивы и т. д. спасибо
@Danoram - ты ОП, у тебя две учетные записи? , и предоставьте ссылку на ответ
Я не понимаю, о чем вы сейчас говорите. это рассказало мне, что мне нужно знать, чтобы получить стили с использованием привязки innerHTML Я продолжаю жить своей жизнью. Благодарность
@ Danoram - вы не должны делать этот encapsulation: ViewEncapsulation.None,, лучше используйте senetizer, как я дал в моем коде трубы, и я спрашиваю, вы тот человек, который задал вышеупомянутый вопрос
Нет я не. Я буду иметь это в виду. Я ценю все твои ответы здесь.
Насколько я понимаю ваш вопрос, использование внутреннего html заменяет внутренний html. Поэтому старое значение заменяется значением из вашего объекта.
Я понимаю, что вы следуете этому подходу, поскольку хотите отобразить значение из объекта.
Так что лучше использовать трубы. Может быть. Просто проверьте этот ответ. Если это поможет. кликните сюда
обновил свой рабочий ответ, проверьте рабочий код: stackblitz.com/edit/…, то же самое обновлено в моем ответе