web-dev-qa-db-fra.com

Comment imprimer une chaîne html en html

Si juste par exemple je fais:

var = "<a>Asd</a>";

<span>{{ var }}</span>

La chaîne est imprimée comme du texte et non en html, alors comment imprimer le html?

27
itsme

Vous devez utiliser ng-bind-html directive .

Crée une liaison qui innerHTML le résultat de l'évaluation de l'expression dans l'élément actuel de manière sécurisée.

<ANY ng-bind-html="{expression}">
   ...
</ANY>
41
Florian F.

Avant d'utiliser la directive ng-bind-html , vous devez inclure la $ sanitize ou il générera une erreur.

Erreur: $ sce: unsafe Exiger une valeur sûre/de confiance Tentative d'utilisation d'une valeur non sûre dans un contexte sûr.

Error: [$sce:unsafe] http://errors.angularjs.org/1.4.5/$sce/unsafe
    at Error (native)

Le droit chemin:

<script src="angular.js"></script>
<script src="angular-sanitize.js"></script>
var myApp = angular.module('app', ['ngSanitize']);
myApp.controller('MyController', ['$scope', function($scope) {
  $scope.myHTML = '<a href="#">Hello, World!</a>';
}]);
<div ng-controller="MyController">
 <p ng-bind-html="myHTML"></p>
</div>

https://docs.angularjs.org/api/ngSanitize

https://docs.angularjs.org/api/ng/directive/ngBindHtml

9
Wellington Lorindo

Vous pouvez également essayer quelque chose comme ça:

 
 app.filter ('to_trusted', ['$ sce', function ($ sce) {
 return fonction (texte) {
 return $ sce. trustAsHtml (texte); 
}; 
); 
 

puis, en vue:

 
 ng-bind-html = "myHTML | to_trusted" 
 
5
Adam Kosmala