angular2中讓路由連結保持啟用狀態

weixin_34138377發表於2016-12-23

ng2中,可以通過

template: `
  <h1>Angular Router</h1>
  <nav>
    <a routerLink="/crisis-center" routerLinkActive="active">Crisis Center</a>
    <a routerLink="/heroes" routerLinkActive="active">Heroes</a>
  </nav>
  <router-outlet></router-outlet>
`

給啟用的路由繫結動態class,通過設定class樣式即可設定啟用的路有連結的樣式。
但是當頁面跳到其他路由(上面兩個以為的其他路由),兩個路由連結都不處於啟用狀態,失去class樣式。

不過可以通過RouterLinkActive特性讓路由連結保持啟用狀態
RouterLinkActive指令會基於當前的RouterState物件來為啟用的RouterLink切換CSS類。 這會一直沿著路由樹往下進行級聯處理,所以父路由連結和子路由連結可能會同時啟用。 要改變這種行為,可以把[routerLinkActiveOptions]繫結到{exact: true}表示式。 如果使用了{ exact: true },那麼只有在其URL與當前URL精確匹配時才會啟用指定的RouterLink。
所以只要通過設定父子路由即可。

符:路有連結傳參方式:

<nav class="app_nav">
        <div *ngFor="let item of currentUser?.frontSet;let last = last;" [isLast]="last" (lastDone)="initVav()">
            <a [routerLink]="item.code" [queryParams]="{userName : currentUser.name}" routerLinkActive='active'>
                  {{item.moduleName}}
            </a>
        </div>
    </nav>

下一篇講到的動態路由替代方案也會用到這段程式碼

相關文章