You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular数据绑定中如何为含HTML标签的字符串设置样式?

问题解答:让HTML字符串中的标签生效

Angular里用{{ text }}插值绑定会自动转义HTML内容,把<、>这类字符转换成实体编码,所以你的<strong>标签只会显示成纯文本,不会被浏览器解析成加粗标签。除了你发现的[innerHTML],还有几种更规范或更易复用的方法:

  • 安全版[innerHTML](避免XSS风险)
    直接用[innerHTML]如果是不可信的用户输入会有XSS隐患,建议配合DomSanitizer标记内容为安全HTML:
    组件.ts文件:

    import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
    
    export class YourComponent {
      text: string = '<strong>TEXT</strong>';
      safeText: SafeHtml;
    
      constructor(private sanitizer: DomSanitizer) {
        this.safeText = this.sanitizer.bypassSecurityTrustHtml(this.text);
      }
    }
    

    HTML模板:

    <div class="text">
      <p [innerHTML]="safeText"></p>
    </div>
    
  • 封装成管道(复用性更强)
    如果多个组件都需要处理HTML字符串,写个管道能避免重复代码:
    先创建safe-html.pipe.ts:

    import { Pipe, PipeTransform } from '@angular/core';
    import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
    
    @Pipe({ name: 'safeHtml' })
    export class SafeHtmlPipe implements PipeTransform {
      constructor(private sanitizer: DomSanitizer) {}
      transform(value: string): SafeHtml {
        return this.sanitizer.bypassSecurityTrustHtml(value);
      }
    }
    

    在组件所属的模块里声明这个管道,之后模板里直接用:

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

本质上这些方法都是绕开Angular的HTML转义机制,让浏览器正常解析标签里的HTML结构,其中配合DomSanitizer是官方推荐的安全做法,能防止恶意HTML注入。

内容的提问来源于stack exchange,提问作者Alex Gorokh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:53:14