刷新后,Angular 7激活的路由全部激活

时间:2018-12-13 14:36:27

标签: angular angular-routing angular7 angular-routerlink routerlinkactive

当我重新加载/刷新我的应用程序时,将显示菜单栏中的路线,并且所有项目均设置为active。我已经为路线配置了:

export const routes: Routes = [
  {
    path: '', pathMatch: 'full', redirectTo: 'home',
    data: { title: undefined }
  },
  {
    path: 'login', component: LoginComponent,
    data: { title: 'Login' }
  },
  {
    path: 'home', component: MainComponent,
    data: { title: 'Home' }
  },
  {
    path: 'search',  component: SearchListComponent,
    data: { title: 'Search'}
  },
];

在菜单栏中,我将代码简化为以下代码:

<div class="container">
    <a routerLinkActive="is-active" 
       routerLink="/login">Login</a> |
    <a routerLinkActive="is-active" 
       routerLink="/search">MySearch</a> |
    <a routerLinkActive="is-active" 
       routerLink="/home">MyHome</a> |
</div>

<div >
  <div *ngFor="let route of router.config">
    <a routerLinkActive="is-active" 
        [routerLink]="userName? ('/'+route.path ): '/' ">{{route.data.title}}... {{userName? ('/'+route.path ): '/' }} </a> |
  </div>
</div>

其中两次包含我的路线-几乎相同-除了第二个代码动态生成项目外。第一个在刷新后正确选择项目,而第二个失败。

根据docu routerLink可以用作字符串

任何人都可以解释我为什么第二个失败了吗?

编辑: 根据要求的头像

enter image description here

,但是选择其他链接后,内容保持不变!比所有链接都能正确显示!

EDIT2

我能够reproduce错误。主要问题是对routerlink的评估已为时已晚,我遇到了与已经reported bug相同的问题。

我当前的解决方法:最初设置userName:-/

1 个答案:

答案 0 :(得分:1)

尝试将[routerLinkActiveOptions]="{ exact: true }"添加到您生成的链接中。默认情况下,Angular路由器将匹配任何部分。