angular - 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 列表?
解决方案
当我看到有一个
RouterLinkWithHref
. 我没有时间尝试它,但我想它可以帮助你。
如果我有时间,我会尝试并编辑我的答案。
[编辑]
我试过了,确实,两者(有和没有 a a
)都有效。
这都是假设,但他们可能已经创建RouterLinkWithHref
了与现有锚机制交互(对 SEO 有用)。
然后为无锚标签制作指令似乎是合乎逻辑的(重叠组件选择器和指令选择器感觉不对)。
无论如何,我没有找到任何解决方案来获得RouterLink
一个RouterLinkWithHref
ViewChildren。
推荐阅读
- function - 我可以无线发送tone() 函数吗?
- groovy - UNET 堆栈中的动态路由
- ios - 仅通过电子邮件检查用户是否已有帐户
- tensorflow - 初始化最后一层的偏置项
- excel - Excel 2016 VBA FilePicker - 将文件夹添加到导航窗格上的快速访问组的代码
- python - sklearn 是否需要将 True/False 转换为 1/0?
- python - 为什么我在集合上收到“TypeError:'int' 类型的对象没有 len()”?
- jquery - 输入未触发更改事件
- python - 如何在特定文件夹位置运行 bash 命令的启动配置?
- python - 如何通过选择具有特定列参数的行(来自不同的数据框)来创建新的数据框?