如何在输入上使用innerHTML

时间:2017-02-06 22:44:07

标签: angular angular2-directives

这有效:     <div [innerHTML]="rssItem.title"></div>

这不是:
     <input type="text" formControlName="title" [(ngModel)]="rssItem.title" name="title" #title class="form-control" [innerHTML]="rssItem.title">

为什么呢?

我尝试使用sanitize html管道,如here所述,但它不适用于文本输入。

在Windows上使用Angular2版本2.4.5。

2 个答案:

答案 0 :(得分:2)

这是解码HTML字符(Reference

的简单方法
constructor() {
   let str = "&#39134;&#24605;&#21345;&#23572;&#26368;&#26032;MCU";
   this.rssItem.title = this.decodeHtml(str);
}

private decodeHtml(html: string) {
 var txt = document.createElement("textarea");
 txt.innerHTML = html;
 return txt.value;
}

此外,使用Sanitizer来获取安全的html字符串。 (Reference

答案 1 :(得分:1)

找到基于this answer

的解决方案

创建了一个私有函数:

decodeEntities(encodedString) {
  var textArea = document.createElement('textarea');
  textArea.innerHTML = encodedString;
  return textArea.value;
}

用它来解码字符串。

尝试使用相同的代码创建管道,但无法在输入文本标记中使用它。如果有人知道如何做到这一点,请发布。