@waltaki

Как повесить на все href аналогичный router-link?

Здравствуйте.

Через API мне приходит сообщение пользователя в формате text html.
Моя цель: преобразовать этот текст в html объект, например так:
let valueHtml = document.createElement('div');
valueHtml.innerHTML = value;
(или через Renderer2)
После чего, получить из этого объекта все элементы <a>, а провести анализ href. Если hrefлокальный, то есть идёт на сам же сайт, то я вешаю на него [routerLink], если нет, то оставляю всё как есть.
Вероятнее всего, преобразовывая элемент из текста в html объект, как делаю я, сделать такого не позволит.
Я сделал обычный pipe, в который передаю весь текст html, он всё в моём замысле должен сделать и на выход дать html, уже с <a [routerLink]></a>.

Подскажите, что мне использовать? И вообще, возможно ли такое?

Angular 7.3.0
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
Xuxicheta
@Xuxicheta
инженер
Повесь обычные обработчики click, проверяешь ссылку, если она локальная, делаешь router.navigateByUrl иevent.preventDefault

Директиву routerLink бесполезно вешать, шаблоны ангуляра только кажутся похожими на html, это код, который компилируется в js. А в живом html директивы не работают.

И еще не надо впрямую присваивать innerHTML, прочитай это https://angular.io/guide/security
Достаточно использовать директиву [innerHTML]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы