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

问题描述 投票:1回答:2

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

firebase

//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}}

如果需要更多代码段,请告诉我。非常感谢你提前。

html string angular typescript text-formatting
2个回答
1
投票

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

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

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


1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.