Adam Pery
Adam Pery

Reputation: 2102

What the right way unescape html entities in Angular?

I get html entities from json file, like: ’ How can I unescape it in html component?

I created custom pipe, but it works only for entities like &:

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);
  }

}

Upvotes: 9

Views: 9727

Answers (2)

andrea06590
andrea06590

Reputation: 1299

Still the same : use replace or encodeUri of JavaScript and escape every chars you don't want. The other way is to create a Pipe like you are doing based on regex/replace/escape functions ;)

escape(htmlInput) { 
    htmlInput.replace("&", "and")
} 

escape is now encodeUri and you can also use contains to verify first if you have a matched pattern :)

Upvotes: 1

Adam Pery
Adam Pery

Reputation: 2102

The solution, create next custom pipe:

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

}

Upvotes: 9

Related Questions