Мне нужно заменить строку тегом HTML и иметь атрибут id.
Вот мой код, ТС-файл:
let content = "this is a car.";
content.replace(new RegExp('car'), match => {
return `<span class = "highlight-text" id = "car"> + match +</span>`;
});
<div [innerHTML] = "content"></div>
При проверке элемента он показывает только класс,
<div>
<span class = "highlight-text">car</span>
</div>
Почему он не добавляет атрибут ID в тег span?
Заменить возвращает измененное содержимое.
let content = "this is a car.";
content = content.replace(new RegExp('car'), match => {
return `<span class = "highlight-text" id = "car">${match}</span>`;
});
console.info(content)
Поле id удаляется Angular в процессе очистки DOM. Чтобы добавить поле id в innerHTML, вам нужно будет явно указать Angular, что анализировать этот HTML-контент безопасно. Вы можете реализовать его следующим образом:
let oldContent = "this is a car.";
oldContent.replace(new RegExp('car'), match => {
return `<span class = "highlight-text" id = "car"> + match +</span>`;
});
let content = this.sanitizer.bypassSecurityTrustHtml(content)
где sanitizer — это экземпляр DOMSanitizer, который следует внедрить в конструктор.
constructor(private sanitizer: DomSanitizer) { }
Вам нужно очистить html: stackoverflow.com/questions/48556861/…