@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
  • Вопрос задан
  • 275 просмотров
Решения вопроса 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
Повесь обычные обработчики click, проверяешь ссылку, если она локальная, делаешь router.navigateByUrl иevent.preventDefault

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

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

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

Похожие вопросы