Decode HTML entity in Angular JS Decode HTML entity in Angular JS javascript javascript

Decode HTML entity in Angular JS


You can use the ng-bind-html directive to display it as an html content with all the html entities decoded. Just make sure to include the ngSanitize dependency in your application.

DEMO

JAVASCRIPT

angular.module('app', ['ngSanitize'])  .controller('Ctrl', function($scope) {    $scope.html = '"12.10 On-Going Submission of ""Made Up"" Samples."';  });

HTML

  <body ng-controller="Ctrl">    <div ng-bind-html="html"></div>  </body>


If you don't want to use ngSanitize, you can do it this way:

in your controller:

$scope.html = '"12.10 On-Going Submission of ""Made Up"" Samples."'$scope.renderHTML = function(html_code)        {            var decoded = angular.element('<textarea />').html(html_code).text();            return $sce.trustAsHtml(decoded);        };

And in the template:

<div ng-bind-html="renderHTML(html)"></div>

Just make sure you inject $sce in your controller


I have similar issue, but don't need to use result value on UI. This issue was resolved by code from angular ngSanitize module:

var hiddenPre=document.createElement("pre");/*** decodes all entities into regular string* @param value* @returns {string} A string with decoded entities.*/function decodeEntities(value) {  if (!value) { return ''; }      hiddenPre.innerHTML = value.replace(/</g,"<");  // innerText depends on styling as it doesn't display hidden elements.  // Therefore, it's better to use textContent not to cause unnecessary reflows.  return hiddenPre.textContent;}var encoded = '<p>name</p><p><span style="font-size:xx-small;">ajde</span></p><p><em>da</em></p>';var decoded = decodeEntities(encoded);document.getElementById("encoded").innerText=encoded;document.getElementById("decoded").innerText=decoded;
#encoded {  color: green;}#decoded {  color: red;}
Encoded: <br/><div id="encoded"></div><br/><br/>Decoded: <br/><div id="decoded"></div>