【问题标题】:Angular 4 get [routerLink] ViewChildrenAngular 4 获取 [routerLink] ViewChildren
【发布时间】:2018-09-17 20:02:37
【问题描述】:

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

<div *ngFor="let link of links">
  <a [routerLink]="[link.url]">{{ link.label }}</a>
</div>

我尝试设置@ViewChildren(RouterLink) links: QueryList&lt;RouterLink&gt;;。不过这个列表总是空的。

@ViewChild(RouterLink) elem: RouterLink; 的快速实验:

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

返回一个值,而

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

没有。

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

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

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

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

【问题讨论】:

    标签: angular routerlink viewchild


    【解决方案1】:

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

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

    [编辑]

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

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

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

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

    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 2018-04-28
    • 2017-01-15
    相关资源
    最近更新 更多