Angular 4中如何显示内容的CSS样式示例代码


Posted in Javascript onNovember 06, 2017

前言

在开始本文的正文之前,我们先来看一下angular2中将带标签的文本输出在页面上的相关内容,为了系统性的防范XSS问题,Angular默认把所有值都当做不可信任的。 当值从模板中以属性(Property)、DOM元素属性(Attribte)、CSS类绑定或插值表达式等途径插入到DOM中的时候, Angular将对这些值进行无害化处理(Sanitize),对不可信的值进行编码。

h3>Binding innerHTML</h3>

<p>Bound value:</p>

<p
class="e2e-inner-html-interpolated">{{htmlSnippet}}</p>

<p>Result of binding to innerHTML:</p>

<p
class="e2e-inner-html-bound" [innerHTML]="htmlSnippet"></p>
[innerHTML]="htmlSnippet"

这个属性可以识别 HTML标签 但不识别标签中的属性值

发现问题

大家都知道Angular 中有 innerHTML 属性来设置要显示的内容,但是如果内容包含 CSS 样式,无法显示样式的效果。

比如:

public content: string = "<div style='font-size:30px'>Hello Angular</div>";

<p [innerHTML]="content"></p>

只会显示 Hello World ,字体不会是 30px,也就是 CSS 样式没有效果。

解决方案

自定义一个 Pipe 来对内容做转换。看下面代码。

写一个 HtmlPipe 类

import {Pipe, PipeTransform} from "@angular/core";
import {DomSanitizer} from "@angular/platform-browser";

@Pipe({
 name: "html"
})

export class HtmlPipe implements PipeTransform{

 constructor (private sanitizer: DomSanitizer) {

 }

 transform(style) {
 return this.sanitizer.bypassSecurityTrustHtml(style);
 }
}

在需要的模块里面引入管道 HtmlPipe

@NgModule({
 declarations: [
 HtmlPipe
 ]
})

在 innerHtml 中增加管道名字

<p [innerHTML]="content | html"></p>

这样就可以显示 content 的 CSS 样式。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Array对象方法参考
Oct 03 Javascript
jquery BS,dialog控件自适应大小
Jul 06 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
Oct 29 Javascript
SyntaxHighlighter 3.0.83使用笔记
Jan 26 Javascript
javascript引用类型之时间Date和数组Array
Aug 27 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
Aug 05 Javascript
详解jQuery的Cookie插件
Nov 23 Javascript
Vue 2.x教程之基础API
Mar 06 Javascript
javascript实现二叉树的代码
Jun 08 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
Apr 20 Javascript
Vue-Router基础学习笔记(小结)
Oct 15 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 Javascript
详解基于vue-cli优化的webpack配置
Nov 06 #Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
Nov 06 #Javascript
js中apply与call简单用法详解
Nov 06 #Javascript
js实现简单数字变动效果
Nov 06 #Javascript
利用百度地图API获取当前位置信息的实例
Nov 06 #Javascript
原生js封装添加class,删除class的实例
Nov 06 #Javascript
Node.js实现发送邮件功能
Nov 06 #Javascript
You might like
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
php实现微信支付之退款功能
2018/05/30 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
Vue 打包体积优化方案小结
2020/05/20 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python实现全角半角转换的方法
2014/08/18 Python
浅析Python中的多条件排序实现
2016/06/07 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
如何写出好的Java代码
2014/04/25 面试题
美容院店长岗位职责
2014/04/08 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
Python中else的三种使用场景
2021/06/16 Python
利用python进行数据加载
2021/06/20 Python
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python