我正在尝试获取当前组件中所有链接的列表,并使用一个模板来查看以下内容:
<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]的列表?
发布于 2018-09-17 06:57:27
当我看到有一个RouterLinkWithHref时,我正在寻找同样的东西。我没有时间试一试,但我想它能帮到你。
如果我有时间后,我会尝试和编辑我的答案。
编辑
我试过了,实际上,这两种方法(不管有没有a)都能工作。
这都是假设,但是他们可能已经创建了RouterLinkWithHref来与现有的锚机制(对SEO有用)进行交互。
然后,为none锚标记设置指令似乎是合乎逻辑的(重叠组件选择器和指令选择器感觉不正确)。
无论如何,我没有找到任何解决方案,使RouterLink和RouterLinkWithHref在一个单一的ViewChildren。
https://stackoverflow.com/questions/51194701
复制相似问题