javascript - 带有内联样式的 html 文本的 Angular (2/5) 渲染问题
问题描述
我在显示 HTML 数据时遇到问题,包括通过编辑器动态生成的内联样式(例如 TinyMCE)。事实上,我已经使用innerHTML
绑定来显示 html 数据。但是,它忽略任何 inline style
。
例如:
我有以下示例数据component.ts
:
let sampleData = '<h1><span style="background-color: #ffff99;">Welcome to the sample demo!</span></h1> <p><span style="color: #ff0000;">Please try out the features provided in this basic example.</span>'
我正在尝试显示component.html
:
<div innerHTML="{{ sampleData }}"></div>
实际输出为:
欢迎来到示例演示!
请试用此基本示例中提供的功能。
解决方案
很抱歉创建重复的问题。
但是,我在创建自定义管道后解决了这个问题
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser'
/*
* Pipe to avoid stripping the inline style on html text.
*
* Usage:
* safeHtml
* Example:
* 1. In Javascript:
* let input = new SafeHtml().transform(input);
*
* 2. In HTML:
* {{ safeHtml }}
*/
@Pipe({ name: 'safeHtml'})
export class SafeHtmlPipe implements PipeTransform {
constructor(private sanitized: DomSanitizer) {}
transform(input) {
return this.sanitized.bypassSecurityTrustHtml(input);
}
}
应用管道:
<div [innerHtml]="myHtmlContent | safeHtml"></div>
推荐阅读
- ruby-on-rails - Rails 关联错误的类
- ms-access - 如何要求用户确认对访问记录的编辑
- azure-active-directory - 我们如何使用 msal 更新 idtoken?
- ios - MGLMapView scaleBar 位置在底部通过更新约束
- react-native - 使用图像上的时间戳更新图像
- python - Word2Vec 太多值无法解包错误
- amazon-web-services - 问初始化.....不工作
- c# - C# 只读跨度
vs 字符串剖析的子字符串 - java - 检查括号是否匹配总是说它们匹配
- acumatica - 在代码上查找 Acumatica 的版本