iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >Angular中innerHTML标签的样式为什么不起作用
  • 763
分享到

Angular中innerHTML标签的样式为什么不起作用

2024-04-02 19:04:59 763人浏览 泡泡鱼
摘要

小编给大家分享一下angular中innerhtml标签的样式为什么不起作用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.背

小编给大家分享一下angular中innerhtml标签的样式为什么不起作用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1.背景

         在最近angular的项目中,需要用到[innerHTML]标签来指定一个div的样式:

 //HTML部分
 <div class="contents" [innerHTML]="contents"></div>

 //TS部分
 contents = '<p>商品信息栏位<br><span >商品信息介绍</span></p>';

        但是上面的样式并不起作用,在ChORMe中查看源码,发现style标签的样式在Angular编译的时候被屏蔽掉。这是为什么呢?客观别急,请往下看。

2.解决方案

       先说解决方案,最后再分析出现这种问题的原因。修改上面的TS:

// 在使用的页面引入DomSanitizer 
 import { DomSanitizer } from '@angular/platform-browser';
//构造方法里注入sanitizer对象
 constructor( private sanitizer: DomSanitizer
 ) { }
// 对HTML代码做处理
 this.contents= this.sanitizer.bypassSecurityTrustHtml("<p>W3商品信息栏位<br><span >商品信息介绍</span></p>");

  这样虽然可以解决问题,但是这样做还不够:

•代码冗余繁杂:如果我们的contents内容过大,这样我们的代码就显得很乱,影响可读性和美观;
•不能复用:如果其他ts中也要用到innerHTML标签,又要重新写一遍上面的TS内容,没有复用性;

      基于以上两点,我们用自定义管道(pipe)来优化以上代码,使用ng generate pipe safe-html命令来生成一个pipe,并做适当的修改:

// 对safe-html.pipe.ts做适当修改<br><br>import {Pipe, PipeTransform} from '@angular/core';
import {DomSanitizer} from '@angular/platform-browser';
@Pipe({name: 'safeHtml'})
export class SafeHtmlPipe implements PipeTransform {
 constructor(private sanitized: DomSanitizer) {
 }
 transform(value) {
  return this.sanitized.bypassSecurityTrustHtml(value);
 }
}<br><br>// 在使用innerHTML标签的属性里使用以上safeHtml管道

<div class="contents" [innerHTML]="contents|safeHtml"></div>

3.原因及原理

           所以,为什么会出现上面的问题呢?原来,Angular中默认将所有输入值视为不受信任。当我们通过 property,attribute,样式,类绑定或插值等方式,

   将一个值从模板中插入到DOM中时,Angular会自帮我们清除和转义不受信任的值。在开头的例子中,span标签里的样式被屏蔽了,不信请看:

     Angular中innerHTML标签的样式为什么不起作用  

  Angular 在编译的时候,会自动清理 HTML 输入并转义不安全的代码,因此在这种情况下,style被屏蔽,样式失效。这时候如果需要将样式片段渲染出来,

 就需要用到DomSanitizer了。DomSanitizer 可以把值净化为在不同 DOM 上下文中的安全内容,来帮我们防范跨站脚本攻击(XSS)类的安全问题。

以上是“Angular中innerHTML标签的样式为什么不起作用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: Angular中innerHTML标签的样式为什么不起作用

本文链接: https://www.lsjlt.com/news/73650.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Angular中innerHTML标签的样式为什么不起作用
    小编给大家分享一下Angular中innerHTML标签的样式为什么不起作用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.背...
    99+
    2024-04-02
  • css的样式不起作用的原因是什么
    这篇文章给大家分享的是有关css的样式不起作用的原因是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css的全称是什么css的全称是Cascading Style Sheets(层叠样式表),它是一种用来表现...
    99+
    2023-06-14
  • css样式不起作用怎么办
    CSS(层叠样式表)是一种定义网页外观的语言。它可以为HTML(超文本标记语言)文本提供样式和排版。若CSS样式不起作用,将会导致网页排版混乱或者不符合设计要求,这会给用户带来不良的体验。以下是一些可能的原因:CSS样式表中存在语法错误在C...
    99+
    2023-05-14
  • idea中@Data标签getset不起作用如何解决
    这期内容当中小编将会给大家带来有关idea中@Data标签getset不起作用如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。spring cloud中使用@Data标签,不用手动添加get set...
    99+
    2023-06-06
  • android为什么FLAG_ACTIVITY_CLEAR_TOP不起作用
    FLAG_ACTIVITY_CLEAR_TOP标志位用于启动一个新的Activity时,如果该Activity已经在栈中存在,则将其...
    99+
    2023-09-16
    android
  • android – 为什么FLAG_ACTIVITY_CLEAR_TOP不起作用
    FLAG_ACTIVITY_CLEAR_TOP 是一个Intent的标志,用于将Activity任务栈中位于启动Activity之上...
    99+
    2023-09-17
    android
  • html中innerHTML的作用是什么
    innerHTML属性用于获取或设置HTML元素的内容。它可以用来动态修改HTML元素的内容,包括文本、标记和其他HTML元素。当你...
    99+
    2023-10-24
    html innerHTML
  • Struts2 属性标签escapeHtml 不起作用我错过了什么吗
    Struts2的属性标签escapeHtml是用来防止HTML代码注入攻击的。当我们在页面上展示用户输入的内容时,为了防止用户输入恶...
    99+
    2023-09-26
    Struts2
  • 为什么 PHP 函数不起作用?
    php 函数不起作用可能是由于语法错误、参数类型不正确、参数顺序错误、函数声明缺失或命名空间冲突。解决方法包括:检查语法、确认参数类型、确保参数顺序正确、声明或定义函数、使用命名空间并启...
    99+
    2024-04-17
    函数 php
  • Angular中组件样式的工作原理是什么
    这篇文章给大家分享的是有关Angular中组件样式的工作原理是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 在开发 Angular 组件的过程中...
    99+
    2024-04-02
  • CSS样式不起作用的解决方法
    这篇文章主要介绍CSS样式不起作用的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!浏览器缓存问题如果你反复检查认为代码没有问题,那么可能是浏览器缓存的问题。在排查前先试一下清除浏览器缓存,重启浏览器或者换个浏...
    99+
    2023-06-08
  • html中如何操作a标签的默认样式
    小编给大家分享一下html中如何操作a标签的默认样式,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   代码如下:   a:...
    99+
    2024-04-02
  • 为什么 post 请求在 gin golang 中不起作用?
    编程网今天将给大家带来《为什么 post 请求在 gin golang 中不起作用?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都...
    99+
    2024-04-04
  • css中class标签什么作用
    本教程操作环境:Windows10系统、CSS3版、DELL G3电脑css中class标签什么作用?css中的class不是标签,而是一个类选择器。class是类选择器,允许以一种独立于文档元素的方式来指定样式。在使用类选择器之前,需要修...
    99+
    2023-05-14
    css class
  • java中property标签的作用是什么
    在Java中,property标签是一种用于定义类的属性的标签。它的作用是将类的属性与XML配置文件中的属性进行绑定,从而实现属性的...
    99+
    2023-09-16
    java
  • 为什么css属性值clear:right不起作用
    这篇文章主要介绍“为什么css属性值clear:right不起作用”,在日常操作中,相信很多人在为什么css属性值clear:right不起作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”为什么css属性值...
    99+
    2023-06-08
  • html中th标签的作用是什么
    html中th标签的作用是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。html th是用于定义表格内的表头单元格的一种标签,th元素内部的文本通常会呈现为居中的粗体文本,...
    99+
    2023-06-15
  • HTML中area标签的作用是什么
    这篇文章主要介绍了HTML中area标签的作用是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  HTML 标签  实例  带有可点击区...
    99+
    2024-04-02
  • html中marquee标签的作用是什么
    marquee标签用于在网页中创建滚动的文本或图像的效果。它可以让文本或图像从一侧滚动到另一侧,从而吸引用户的注意力。marquee...
    99+
    2023-08-08
    html marquee
  • mybatis中trim标签的作用是什么
    在MyBatis中,trim标签用于对SQL语句进行处理,可以用于移除或者添加指定的字符串。trim标签的作用有以下几个方面:1. ...
    99+
    2023-09-11
    mybatis
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作