将包含 html 标记的存储字符串转换为 html 文本格式

Posted

技术标签:

【中文标题】将包含 html 标记的存储字符串转换为 html 文本格式【英文标题】:Convert stored string that contain html tag into html text formatting 【发布时间】:2017-12-18 09:41:10 【问题描述】:

我有一个将数据存储在 firebase 中的 Angular 项目。数据以字符串 (prdName: string;) 的形式存储在数据库中。我想问是否可以在<b>this is text</b>之类的字符串中放置一个html标签并将其存储,然后将它们绑定/查看为html文本格式? (文字变为粗体)

//service.ts
getData() 
  this.List = this.firebase.list('Product');
  return this.List;


insertProduct(Product: Product) 
  this.productList.push(
    prdName: Product.prdName,
    prdCategory: Product.prdCategory,
    prdSup: Product.prdSup,
    prdImage: Product.prdImage,
    prdDescription: Product.prdDescription
  );

//component.ts
ngOnInit() 
  var x = this.ListService.getData();
  x.snapshotChanges().subscribe(item => 
    this.List = [];
    item.forEach(element => 
      var y = element.payload.toJSON();
      y["$prdKey"] = element.key;
      this.List.push(y as List);
    );
  );
<!--component.html-->
<label>Product Name: </label> ListService.selectedProduct.prdName

如果需要更多的 sn-ps,请告诉我。非常感谢您。

【问题讨论】:

【参考方案1】:

你必须使用innerHtml来绑定html标签:

<div [innerHTML]="ListService.selectedProduct.prdName"></div>

检查这个:https://angular.io/guide/template-syntax#!#property-binding-or-interpolation-

【讨论】:

【参考方案2】:

我在我的项目中使用了这样的管道来使其正常工作

import  PipeTransform, Pipe  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);
  

然后在您想要拥有 html 的地方,您只需这样做

<div [innerHTML]="someHtmlContent | safeHtml"></div> 

需要管道以使此 html 内容受信任,有关此的更多信息:

https://angular.io/guide/security#bypass-security-apis

【讨论】:

以上是关于将包含 html 标记的存储字符串转换为 html 文本格式的主要内容,如果未能解决你的问题,请参考以下文章

将 HTML 字符串转换为图像

正则表达式 - 将 HTML 转换为有效的 XML 标记 [重复]

怎么将HTML文档转换为Word文档?

将cheerio对象转换为字符串

Python:将字符串转换为十进制数

将 HTML 转换为 CSV