在应用程序本身导航时使用动态生成的链接时,RouterLinkActive不起作用。
例如,在我的顶部导航中,我有这个;
<a [routerLink]=['user', currentUser.name] routerLinkActive='active'>{{currentUser.name}}</a>而硬编码版本可以工作。
<a [routerLink]=['user','bob']>View Bobs Account</a>这里有一个很好的例子:https://plnkr.co/edit/BYKMucE3Y75uJSpV5VWx?p=preview
单击"John“和"Dynamic Router Link Name =”,"John“应该都处于活动状态。这有时会在第一次点击时起作用,如果是这样的话,然后点击回到“主页”,再次点击"John",你会看到只有硬编码的链接被注册为活动的,即使hrefs是相同的。
这是设计好的/不可能的吗?或者是我设置得不正确?
发布于 2016-11-10 20:54:46
在您的组件中:
import {Router} from '@angular/router';
isActive(instruction: any[]): boolean {
// Set the second parameter to true if you want to require an exact match.
return this.router.isActive(this.router.createUrlTree(instruction), false);
}在您的HTML中:
<a [class.active]="isActive(['user', currentUser.name])">发布于 2018-05-29 18:00:41
接受的答案对我不起作用,我只想突出显示顶级路由匹配,所以我使用:
isActive(url): boolean {
return this.router.url.includes(url);
}和:
[class.active]="isActive('url')"发布于 2016-12-28 07:42:01
仅当路由更改时,才会在初始负载时评估routerLinkActive。当链接更改时,不会重新评估它。因此,动态生成链接不适用于routerLinkActive。Victor Bredihin的解决方案在渲染过程中评估组件函数时起作用。
https://stackoverflow.com/questions/39271654
复制相似问题