子路由上的RouterLinkActive都是假的

Vic*_*lio 6 angular angular-router

我有以下儿童路线:

{ path: '', component: LoginSingupComponent,
  children: [
    { path: 'login', component: LoginComponent },
    { path: 'singup', component: SingupComponent },
  ]
},
Run Code Online (Sandbox Code Playgroud)

导航到/login/singup工作正常(加载了正确的组件).

这是摘录自 LoginSingupComponent

<nav md-tab-nav-bar class="mb-1">
  <a md-tab-link routerLink="/login" routerLinkActive [routerLinkActiveOptions]="{exact: true}" #rla="routerLinkActive" [active]="rla.isActive">Entrar {{rla.isActive}}</a>
  <a md-tab-link routerLink="/singup" routerLinkActive [routerLinkActiveOptions]="{exact: true}" #rla="routerLinkActive" [active]="rla.isActive">Criar uma conta{{rla.isActive}}</a>
</nav>
Run Code Online (Sandbox Code Playgroud)

/login所有rla.isActive == false的时候/singuprla.isActive == true

尝试与否 exact: true

Cha*_*dru 10

像这样尝试:

<nav md-tab-nav-bar class="mb-1">
    <a md-tab-link [routerLink]="['/']" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">Home</a>
    <a md-tab-link [routerLink]="['/login']" routerLinkActive="active">Login</a>
    <a md-tab-link [routerLink]="['/singup']" routerLinkActive="active">Signup</a>
</nav>
Run Code Online (Sandbox Code Playgroud)


Vic*_*lio 5

发现问题了。

这是因为我使用相同的变量名导出了两个 routerLinkActive,这导致了这种奇怪的行为。

<a md-tab-link routerLink="/auth/login" routerLinkActive [active]="rlal.isActive" #rlal="routerLinkActive">Entrar {{rlal.isActive}}</a>
<a md-tab-link routerLink="/auth/singup" routerLinkActive [active]="rlas.isActive" #rlas="routerLinkActive">Criar uma conta{{rlas.isActive}}</a>
Run Code Online (Sandbox Code Playgroud)

解决问题。