Угловой 5: отображать HTML и XML из ответа сервера

У меня есть сценарий, где мне нужно отобразить HTML и XML из той же строки, отправленной с сервера.

Ответ от сервера выглядит так:

This is sample text with <b>bold text</b> and also some xml like this <note><to>you</to><from>me</from><heading>title</heading><body>message</body></note>. As you can see it contains both xml to display and html to render.

Я старался:

text;
msg = 'This is sample text with <b>bold text</b> and also some xml like this <note><to>you</to><from>me</from><heading>title</heading><body>message</body></note>. As you can see it contains both xml to display and html to render.'

constructor(private domSanitizer: DomSanitizer) {
}

ngOnInit() {
    this.text = this.getInnerHTMLValue();
}

getInnerHTMLValue() {
    return this.domSanitizer.bypassSecurityTrustHtml(this.msg);
}

HTML:

<pre [innerText]="text"></pre>

Я получаю эту ошибку:

SafeValue must use [property]=binding:...

И когда я использую [innerHTML] вместо [innerText] XML был очищен.

Как я могу отобразить образец кода XML наряду с разбором HTML-тегов, таких как <b> теги? Как минимум, как я могу избавиться от этой ошибки?

1 ответ

Решение

Боюсь, это будет невозможно. Посмотрите на спецификации WC3:

Пользовательские агенты должны рассматривать элементы и атрибуты, которые они не понимают, как семантически нейтральные; оставляя их в DOM (для процессоров DOM) и стилизуя их в соответствии с CSS (для процессоров CSS), но не выводя из них никакого смысла.

Это означает, что хотя элементы неизвестны вашему браузеру, они будут частью домена и, следовательно, не будут отображаться в тексте.

Ваши единственные решения будут либо кодировать все теги, кроме <b>, <i>,... сам: <note> -> &#x3C;note&#x3E; или использовать что-то вроде уценки для форматирования.

Как самый простой обходной путь, просто используйте msg без санации как есть:

<pre>{{msg}}</pre>

Поскольку это не будет интерпретироваться, дезинфекция не является необходимой. (Теги как <b> не будет интерпретироваться, конечно.)

Другие вопросы по тегам