Angular 4 获取 [routerLink] ViewChildren

Angular 4 get [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>

returns一个值,而

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

不会。

我查看了文档:https://angular.io/api/router/RouterLink,其中选择器实际给出的是 :not(a)[routerLink],因此实验有意义。

现在的问题是:如何获得作为 <a> 元素属性的 [routerLink] 的列表?我找不到任何 AComponent 或可疑的东西。

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

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

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

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

[编辑]

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

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

然后为 none 锚标记制定指令似乎合乎逻辑(重叠组件选择器和指令选择器感觉不对)。

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