ng-bind с AngularJS переводной интерполяцией - PullRequest
0 голосов
/ 22 мая 2018

Мне нужно отобразить символы, такие как <и>, которые могут быть включены в имя или фамилию пользователя.Я использую угловой перевод для отображения имени, передавая имя и фамилию в качестве значений.Однако, если имя или фамилия содержит <, значение не будет отображаться.Я думаю, что мне нужно использовать что-то вроде <code>ng-bind="translation_key | translate | values", но это неправильно.Как я могу использовать ng-bind с интерполяцией углового перевода?Это правильный способ рендеринга переведенного значения, содержащего символы, такие как <,>?Спасибо.

* Редактировать

Это почти работает, но дезинфицирующее средство выдает ошибку.

ng-bind="'locales.user_filter' | translate: { first: user.firstName, last: user.lastName }"

Ошибка: [$ sanitize:badparse] Дезинфицирующее средство не смогло проанализировать следующий блок html:

1 Ответ

0 голосов
/ 22 мая 2018

Я завелся с помощью фильтра перед передачей значений ключу перевода.

.filter('htmlEntities', function () {
  return function (input) {
    return String(input).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
  };
});


var first = $filter('htmlEntities')(scope.user.firstName);
var last = $filter('htmlEntities')(scope.user.lastName);
scope.displayName = $translate.instant('locales.user_filter', { first: first, last: last });

<td ng-bind-html="displayName"></td>
...