首页 > 解决方案 > ngClass 没有看到通过服务订阅更新的变量

问题描述

我试图规避routerLinkActiveOptions exact:true允许我将一个活动类放在根加一个 id 的链接上:site.com/:id

显然,这不适用于 RouterLinkActive,因为/它将匹配每条路由。所以我订阅了一项服务来报告当前的 url 和参数,它非常适合字符串插值,但是当我尝试在指令中解释变量时,它会被忽略。只是想知道为什么在变量更改时模板会更新,但依赖于变量的逻辑不会被重新评估。

%div {{url}}
.tab-group.tab-group-rosters
  %a.tab.tab-roster(routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" routerLink="/" [ngClass]="url === 'roster' ? 'active' : ''")

^ 此代码适用于页面加载,但不适用于后续导航。但是,div 的内容按预期更新。

我尝试将 url 设为 Observable 并将其通过管道传递,| async但它抱怨了。

我还尝试this.ref.detectChanges();了处理订阅的功能,但没有奏效。

当 url 更改时,有人可以提示我重新运行模板逻辑的公认方式吗?

标签: angular

解决方案


嗯,所以,事实证明同一链接上的 routerLinkActive="active" 搞砸了。也许在 ngClass 设置它之后它正在删除“活动”。看起来如果我决定使用它,我必须将课程设置为完全手动模式。


推荐阅读