在Angular中,如何正确地取消转义HTML实体?

9

我从json文件获取html实体,例如:’。如何在html组件中取消转义?

我创建了自定义管道,但仅适用于像&这样的实体:

import { Pipe, PipeTransform } from '@angular/core';
import {unescape} from 'lodash';

@Pipe({
  name: 'unescape'
})
export class UnescapePipe implements PipeTransform {

  transform(value: any, args?: any): any {
    return unescape(value);
  }

}

  • 我正在使用 Angular 5 进行开发。

请问如何在JavaScript中取消转义HTML实体?(链接:https://dev59.com/o3I-5IYBdhLWcg3wVWpi) - Liam
2个回答

9
解决方案是创建下一个自定义管道:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'unescape'
})
export class UnescapePipe implements PipeTransform {

  transform(value: any, args?: any): any {
    const doc = new DOMParser().parseFromString(value, 'text/html');
    return doc.documentElement.textContent;
  }

}


1
仍然是相同的方法:使用JavaScript的replace或encodeUri函数,并转义每个不需要的字符。另一种方法是创建一个基于正则表达式/替换/转义函数的管道,就像您正在做的那样 ;)
escape(htmlInput) { 
    htmlInput.replace("&", "and")
} 

escape现在被替换为encodeUri,您还可以使用contains来首先验证是否有匹配的模式 :)


这似乎与问题无关。问题不是如何转义URL,而是如何取消转义。 - EJoshuaS - Stand with Ukraine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接