2016-12-05 1 views
0

J'ai une chaîne avec beaucoup de " que je remplace avec une chaîne vide et cela fonctionne. Mais je veux aussi faire un saut de ligne quand une virgule apparaît.remplacer par des virgules avec linebreak dans une chaîne dans une œuvre doenst UIB alerte

Déjà essayé avec ('\n'), ('\r'), ('<br>'), ('<br/>') mais rien ne fonctionne. dans mon contrôleur angulaire j'ai la chaîne

self.msg = msg.replace(/"/gi, '').replace(/,/gi, '\n'); 
self.testAlerts = [{ type: 'success', msg: self.msg}]; 

Je veux montrer ce message dans la zone d'alerte dans mon html

<div uib-alert ng-repeat="alert in testAlerts" type="{{alert.type}}" >{{alert.msg}}</div> 

Pourquoi les sauts de ligne fonctionne pas?

Répondre

1

Utilisez ng-bind-html au lieu d'interpolation:

<div uib-alert ng-repeat="alert in testAlerts" type="{{alert.type}}" ng-bind-html="alert.msg"></div> 

Voici un plunkr pour la démonstration.

+0

cela me donne l'erreur: « erreur: [sce de $: dangereux].. Toute tentative d'utilisation d'une valeur dangereuse dans un contexte sécuritaire – nolags

+1

utilisation sce.trustAsHtml $ dans votre code du contrôleur I mis à jour le [plunkr] (https: //plnkr.co/edit/7Y1V0bp8Uru7raQ5cBhf?p=preview) – RamblinRose

+0

vraiment super! Merci. – nolags

0

Si quelqu'un du monde angulaire est arriver à être ici, vous pouvez utiliser [innerHTML] au lieu de [ng-bind-html] de @ réponse de RamblinRose

Ou encore, ajoutez simplement css classe white-space

<div uib-alert ng-repeat="alert in testAlerts" style="white-space: pre-line;" type="{{alert.type}}" >{{alert.msg}}</div>