#angular #httpwebrequest #text-editor #htmltext
#angular #httpwebrequest #текстовый редактор #htmltext
Вопрос:
Я вставляю данные из QUILL text editor
, которые хранятся в формате HTML. Когда я обращаюсь к данным, чтобы показать где-то, что они показывают так же, как HTML, мне нужно, чтобы они отображались как обычный текст.
<div class="card p-3 mb-3" [innerHTML]="mcq.question ">
JSON из базы данных:
0:
answer: "amp;<p>mcq-1 Aamp;</p>"
question: "amp;<p>mcq-1tQamp;</p>"
Ответ №1:
Первое, что приходит на ум, это то, что HTML просто недействителен. Вы уверены, что он правильно отформатирован?
Другая возможность: вы пробовали пометить HTML как безопасный с помощью DomSanitizer? В зависимости от типа используемых тегов Angular может остановить его отрисовку, чтобы предотвратить атаки XSS.
Примечание: делайте это только тогда, когда вы на 100% уверены, что HTML безопасен.
Комментарии:
1. я сделаю это просто… Я получаю данные api в формате HTML.. Таким образом, HTML должен выполняться как в браузере, чтобы отображаться в моем div.. вот в чем дело
Ответ №2:
Эта функция выполнит всю работу:
function decodeSpecialEntitiesHtml(html) {
const str = document.createElement("textarea");
str.innerHTML = html;
return str.value;
}
var html = 'amp;<p>mcq-1 Aamp;</p>'
document.getElementById('withoutFunction').innerText = html;
document.getElementById('withFunction').innerText = decodeSpecialEntitiesHtml(html);
<label>without func:</label><div id="withoutFunction"></div>
<br>
<label>with func:</label><div id="withFunction"></div>
<br>
Таким образом, вы можете использовать его как:
<div class="card p-3 mb-3" [innerText]="decodeSpecialEntitiesHtml(mcq.question)">
Потому что вы хотите, чтобы HTML вел себя как текст. Таким образом, в основном это текст, который выглядит как html. поэтому свяжите его с innerText
.
TypeScript
Функция, дружественная к typescript, будет:
public decodeSpecialEntitiesHtml(html) {
const str = document.createElement("textarea");
str.innerHTML = html;
return str.value;
}
и использовать его в шаблоне, как:
<div [innerText]="decodeSpecialEntitiesHtml(serverHtmlResponse)"></div>
Комментарии:
1. эти javascript выдают мне ошибку в Angluar
2. обновлено. @mohanarangan
3. у меня не работает… Данные, которые я получаю от Http, сами по себе являются HTML .. вопрос: «amp; < p> sdfsdtrytamp; </ p>» вот так