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.prototype.slice.apply的使用方法
Mar 17 Javascript
jQuery实现动画效果的实例代码
May 07 Javascript
Iframe实现跨浏览器自适应高度解决方法
Sep 02 Javascript
高效的jquery数字滚动特效
Dec 17 Javascript
Bootstrap学习笔记之环境配置(1)
Dec 07 Javascript
JS闭包用法实例分析
Mar 27 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
Dec 06 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
Feb 03 Javascript
JavaScript剩余操作符Rest Operator详解
Jul 20 Javascript
微信小程序实现侧边栏分类
Oct 21 Javascript
javascript实现前端分页效果
Jun 24 Javascript
手机浏览器唤起微信分享(JS)
Oct 11 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连接数超过限制的解决方法
2011/07/17 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
phpStorm2020 注册码
2020/09/17 PHP
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
javascript实现yield的方法
2013/11/06 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
基于node实现websocket协议
2016/04/25 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
python多进程控制学习小结
2018/10/31 Python
Python中最大递归深度值的探讨
2019/03/05 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
微博营销计划书
2014/01/10 职场文书
创意广告词
2014/03/17 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
2015个人半年总结范文
2015/03/09 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
导游词之青城山景区
2019/09/27 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python