我在字符串 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/