Pha*_*ani 3 html-rendering typescript angular
我有一个角度应用程序,我在组件打字稿中有以下内容:
field: string;
constructor() {
this.field = "Hello, I am <b>happy</b><br><br><input type='text' value='hello' />"
}
Run Code Online (Sandbox Code Playgroud)
在我的组件 html 模板中,我有以下内容:
<div [innerHTML]="field"></div>
Run Code Online (Sandbox Code Playgroud)
我期待一个输出:
Hello, I am happy(happy in bold)
[Text input field here]
Run Code Online (Sandbox Code Playgroud)
相反,整个输入标签被省略。知道如何将这样的 html 内容渲染到角度模板上吗?
在注入之前,您必须首先信任 HTML。为此,您必须使用DomSanitizer 。h3 或 p 或 div 元素被认为是安全的。输入元素不是。
您可以创建一个管道并在需要的地方使用它。
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
@Pipe({
name: 'sanitizeHtml'
})
export class SanitizeHtml implements PipeTransform {
constructor(private _sanitizer: DomSanitizer){}
transform(v: string) : SafeHtml {
return this._sanitizer.bypassSecurityTrustHtml(v);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在 html 中,您可以通过以下方式调用管道:
<div [innerHTML]="field | sanitizeHtml"></div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8128 次 |
| 最近记录: |