angular 当routerLink位于不同的组件中时,routerLinkActive不处于活动状态,

rryofs0p  于 6个月前  发布在  Angular
关注(0)|答案(3)|浏览(49)

哪个@angular/*包是bug的来源?

router

这是个回归吗?

描述

当在不同的组件中使用routerLink时,routerLinkActive不起作用。这也适用于递归组件的情况。

请提供一个最小复现bug的链接

https://stackblitz.com/edit/routing-angular-ewt1ep?file=app%2Fusers%2Fusers.component.html

请提供您看到的异常或错误

  • 无响应*

请提供您在哪个环境中发现此bug(运行ng version)

Angular CLI: 17.0.0
Node: 20.9.0
Package Manager: npm 10.1.0
OS: win32 x64

Angular: 17.0.1
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1700.0
@angular-devkit/build-angular   17.0.0
@angular-devkit/core            17.0.0
@angular-devkit/schematics      17.0.0
@angular/cli                    17.0.0
@schematics/angular             17.0.0
rxjs                            7.8.1
typescript                      5.2.2
zone.js                         0.14.2

还有其他信息吗?

在示例中,只有users.component和user-link.component是相关的。这种行为在文档中没有提及。

7hiiyaii

7hiiyaii1#

RouterLinkActive 是一个 ContentChildren 查询,这种行为在文档中有涵盖。
不会检索其他组件模板中的元素或指令,因为一个组件的模板始终对其祖先来说是一个黑盒子。
它可以认为是在文档中使用自己的呼叫框。

jw5wzhpr

jw5wzhpr2#

@atscott 感谢指出 - 如果能在 RouterLinkActive 部分提到这一点就太好了。我看到了对 QueryList 的引用,但作为一个新来的 Angular 用户,我不知道我是如何知道 RouterLinkActive 是一个 ContentChildren 查询的。
除此之外,实现一个不限于其自身组件的 routerLinkActive 的最佳方法是什么?

qoefvg9y

qoefvg9y3#

除此之外,实现一个不限于其自身组件的routerLinkActive的最佳方法是什么?可能使用常规的querySelector。

相关问题