Angular 4 get [routerLink] ViewChildren - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь получить список всех ссылок в моем текущем компоненте, с шаблоном, который выглядит примерно так:

<div *ngFor="let link of links">
  <a [routerLink]="[link.url]">{{ link.label }}</a>
</div>

Я пытался настроить @ViewChildren(RouterLink) links: QueryList<RouterLink>;. Хотя этот список всегда был пустым.

Быстрый эксперимент с @ViewChild(RouterLink) elem: RouterLink;:

<div [routerLink]="[]">Bla</div>

возвращает значение, а

<a [routerLink]="[]">Bla</a>

нет.

Я проверил в документации: https://angular.io/api/router/RouterLink, где селектор фактически задан как :not(a)[routerLink], поэтому эксперимент имеет смысл.

Теперь вопрос: как мне получить список [routerLink], которые являются атрибутом элемента <a>? Я не смог найти AComponent или что-то подозрительное.

Возможен запасной вариант: добавить идентификатор для всех элементов <a #myLink [routerLink]="[]">, но это кажется странным, поскольку у меня уже есть критерий идентификации, который я хотел бы использовать.

Как мне найти мой список [routerLink] с?

1 Ответ

0 голосов
/ 17 сентября 2018

Я искал то же самое, когда увидел, что RouterLinkWithHref. У меня не было времени, чтобы попробовать это, но я полагаю, это может помочь вам.

Если у меня будет время, я попробую его и отредактирую свой ответ.

[EDIT]

Я пробовал и действительно, оба (с a и без) работает.

Это все предположение, но они могли создать RouterLinkWithHref для взаимодействия с существующим механизмом привязки (полезно для SEO).

Тогда создание директивы для ни одного тега привязки кажется логичным (перекрытие селектора компонента и селектора директивы не кажется правильным).

Во всяком случае, я не нашел никакого решения, чтобы получить RouterLink и RouterLinkWithHref в одном ViewChildren.

...