首页 > 解决方案 > Angular 4 获取 [routerLink] ViewChildren

问题描述

我正在尝试获取当前组件中所有链接的列表,模板看起来类似于以下内容:

<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可疑的东西。

一个可能的后备方案是在所有元素上添加一个 ID <a #myLink [routerLink]="[]">,但这似乎有点奇怪,因为我已经有了一个我想使用的识别标准。

如何找到我的[routerLink]s 列表?

标签: angularrouterlinkviewchild

解决方案


当我看到有一个 RouterLinkWithHref. 我没有时间尝试它,但我想它可以帮助你。

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

[编辑]

我试过了,确实,两者(有和没有 a a)都有效。

这都是假设,但他们可能已经创建RouterLinkWithHref了与现有锚机制交互(对 SEO 有用)。

然后为无锚标签制作指令似乎是合乎逻辑的(重叠组件选择器和指令选择器感觉不对)。

无论如何,我没有找到任何解决方案来获得RouterLink一个RouterLinkWithHrefViewChildren。


推荐阅读