角4获取[routerLink] ViewChildren

时间:2018-07-05 15:08:56

标签: angular routerlink viewchild

我正在尝试获取当前组件中所有链接的列表,以及一个模板,其外观与此类似:

<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]="[]">上添加一个ID,但这似乎有点奇怪,因为我已经有一个要使用的识别标准。

如何找到[routerLink]的列表?

1 个答案:

答案 0 :(得分:3)

当我发现有一个 RouterLinkWithHref。 我没有时间尝试,但是我想它可以为您提供帮助。

如果我有时间的话,我会尝试一下并编辑答案。

[编辑]

我尝试过,实际上,无论有没有a都可以。

所有这些都是假设,但他们可能创建了RouterLinkWithHref来与现有的定位机制(对SEO有用)进行交互。

然后使无锚标记的指令看起来合乎逻辑(重叠组件选择器和指令选择器感觉不正确)。

无论如何,我没有找到在单个ViewChildren中获得RouterLinkRouterLinkWithHref的任何解决方案。