美文网首页
angular innerHtml样式不生效

angular innerHtml样式不生效

作者: 饱饱想要的灵感 | 来源:发表于2022-09-25 14:31 被阅读0次

例如:
ts:
let myStyle = "<span style='color:blue'>江南</span>style";
html:

<div [innerHtml]="myStyle"></div>

最终结果是:
<span>江南</span>style

原因:

Angular2默认将所有输入值视为不受信任。当我们通过 property,attribute,样式,类绑定或插值等方式,将一个值从模板中插入到DOM中时,Angular会自动清除和转义不受信任的值。

解决:
使用DomSanitizer, DomSanitizer有助于防止跨站点脚本安全漏洞(XSS),通过清除值以便在不同的DOM上下文中安全使用。

  1. 添加管道 safe-html.pipeline.ts
import { Pipe, PipeTransform } from "@angular/core";
import { DomSanitizer } from '@angular/platform-browser';
@Pipe({ name: 'safeHtml' })
export class SafeHtmlPipeLine implements PipeTransform {
    constructor(private sanitized: DomSanitizer) { }
    transform(value) {
        return this.sanitized.bypassSecurityTrustHtml(value);
    }
}
  1. 修改html
    <div [innerHtml]="myStyle"></div>改为<div [innerHtml]="myStyle | safeHtml"></div>即可

相关文章

  • Angular 仿真模式使用时的注意事项

    使用 angular 的仿真模式封装样式时可能会遇到在 css 文件声明的样式不生效的问题。 原因 仿真模式生成的...

  • Angular中添加InnerHtml无法现实scss样式

    无法应用.css文件中的样式 近期在做一个angular的小工具,通过ts动态更新元素的innerHtml属性的时...

  • angular-2

    angular基础模板语法 文本绑定 {{}} html绑定 [innerHTML]="xxx" 属性绑定 [属性...

  • 在angular里面改PrimeNG的组件样式不生效

    今天遇到了让我头疼已久的css样式问题,问题背景是我在angular项目中使用了primeng的treetable...

  • angular 前端路由不生效解决方案

    angular 前端路由不生效解决方案 Intro 最近使用 Angular 为我的活动室预约项目开发一个前后端分...

  • 工作中遇到的奇葩问题

    1.打包后前端样式明明存在但是却不生效,勾选掉当前样式再选中,样式就生效。但是正常情况却不生效,开发时也是生效的解...

  • 样式封装&组件间通信

    关于样式 angular 可以将样式封装在组件本身中,不会影响其他组件的样式(默认)Angular 会修改组件的 ...

  • ios 样式deep不生效

    个人习惯开发写vue文件样式时,css不喜欢用