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 中获取 RouterLink
和 RouterLinkWithHref
的任何解决方案。
我正在尝试获取我当前组件中所有链接的列表,模板看起来与此类似:
<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 中获取 RouterLink
和 RouterLinkWithHref
的任何解决方案。