Angular 2 — очистить ссылку на маршрутизатор

Я хочу вернуться к пользовательским ссылкам маршрутизатора на моей HTML-странице.

В моем HTML у меня есть:

<span [innerHTML]="value | toRouterLink"></span>

канал toRouterLink возвращает обработанную ссылку маршрутизатора:

return this.sanitizer.bypassSecurityTrustHtml(`<a routerLink="/item/something">${value}</a>`);

Когда я нажимаю на нее, ничего не происходит, как будто директивы вообще нет.

Однако, если я поменяю «routerLink» на «href», щелчок по ссылке работает (хотя, естественно, это ведет в никуда).

Как заставить routerLink работать после дезинфекции?

Кажется, что любая директива не работает, например. (щелчок)="myFunc()" не вызывает myFunc().

Из того, что я понял из других тем на эту тему, процесс дезинфекции должен регистрировать директивы и все остальное, связанное с угловой средой, но по какой-то причине этого не происходит.


person Royi Bernthal    schedule 31.10.2016    source источник


Ответы (1)


Вместо этого вы можете попробовать

return this.sanitizer.bypassSecurityTrustURL("/item/something");
<span>
  <a [routerLink]="value | toRouterLink">${value}</a>
</span>

person Ashwin Kumar    schedule 01.11.2016
comment
На самом деле канал возвращает больше, чем просто ссылки на маршрутизатор, он возвращает все виды html с прикрепленными угловыми директивами, поэтому я не могу этого сделать, мне нужно иметь возможность правильно дезинфицировать HTML. - person Royi Bernthal; 01.11.2016
comment
@RoyiBernthal, вы нашли решение проблемы? - person PaladiN; 25.12.2016
comment
Не напрямую, я создал обходной путь, который работал для моей конкретной проблемы — я создал компонент, который переводит для меня некоторые типы вместо пайпа, так что routerLink уже находится в HTML-шаблоне и не нуждается в очистке. Я использую ngSwitch для выбора между различными вариантами отображения, например. строка, число, логическое значение. - person Royi Bernthal; 25.12.2016