javascript - 所有特殊字符代码均未使用 Domsanitizer 转换为相应的符号

标签 javascript angular typescript angular-directive

我在字符串 Ex: "Test'Name"中有撇号 (') 代码,我使用 Domsanitizer 对其进行清理以将 ' 转换为撇号。但是,如果我有双引号代码 ("),它不会被转换为相应的符号。不仅如此,(&) 也不会从代码 (&) 转换为符号。下面是我到目前为止编写的代码.

关于从代码到符号的转换,我做的事情是否正确?

let txt = 'Test"Name';
let txt2 = 'Test'Name';
txt = this.sanitizer.sanitize( SecurityContext.HTML, txt );
txt2 = this.sanitizer.sanitize( SecurityContext.HTML, txt2 );

const ul = this.renderer.createElement('ul');
const li = this.renderer.createElement('li');
const li2 = this.renderer.createElement('li');
const text = this.renderer.createText(txt);
const text2 = this.renderer.createText(txt2);

this.renderer.appendChild(li, text);
this.renderer.appendChild(li2, text2);
this.renderer.appendChild(ul, li);
this.renderer.appendChild(ul, li2);
this.renderer.appendChild(this.el.nativeElement, ul);

请找到Stackblitz这里

问题 1:某些代码未转换为相应的符号

问题 2:如果我有一些像 é 这样的法语字符,那么它会被转换为代码,而不是显示相同的字符(也更新了 stackblitz)

最佳答案

在您的情况下, sanitizer 会将值转换为在浏览器 DOM 中安全使用。

因此您需要将转换后的值分配给 innerHTML(而不是文本节点)。

const ul = this.renderer.createElement('ul');
const li = this.renderer.createElement('li');
const li2 = this.renderer.createElement('li');
li.innerHTML = txt;   // <- inner html
li2.innerHTML = txt2; // <- inner html

this.renderer.appendChild(ul, li);
this.renderer.appendChild(ul, li2);
this.renderer.appendChild(this.el.nativeElement, ul);

关于javascript - 所有特殊字符代码均未使用 Domsanitizer 转换为相应的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55100952/

相关文章:

javascript - 当计时器结束时replaceWith

javascript - 使用 $.get 加载弹出窗口 - Jquery Mobile

javascript - 将多个数组与javascript合并

javascript - CSS/Javascript 不绑定(bind)动态 html 追加

angular - 如何在 Angular 2 应用程序中显示 SSRS 报告

angular - 在 Ionic 2 中使用自定义数据组件

angularjs - 如何将枚举分配给变量?

Angular 5 选择和取消选择复选框

javascript - 当以 Angular 单击时,如何从数据表中检索单个对象?

javascript - KoLite Knockout.command 与继承类的上下文不正确