2017-01-18 34 views
3

切換並保留ng2-bootstrap 的選定選項卡我有一個組件顯示使用 ng2-bootstraptab的選項卡。 使用Angular router

實施例:

<tabset> 
    <tab heading="Info" [active]="tabs[0].active"> 
     <account-data *ngIf="tabs[0].active"></account-data> 
    </tab> 
    <tab heading="Users" [active]="tabs[1].active"> 
     <manage-users *ngIf="tabs[1].active"></manage-users> 
    </tab> 
    <tab heading="Billing" [active]="tabs[2].active"> 
     <account-billing *ngIf="tabs[2].active"></account-billing> 
    </tab> 
</tabset> 

注:tabs[N].active由組件控制,並且已經同步製表變化和路由。但我有這樣的感覺,那就是我做錯了,因爲在選定的選項卡中很難管理路由。讓我們在第二個選項卡,在這一天到底應該管理下面的子路線:

.../users   -> provide list of users 
.../users/new  -> create new user 
.../users/:id  -> show a particular user 
.../users/:id/edit -> edit a particular user 

這並不容易,因爲顯示已選項卡中的組件使用這條路線:

.../:tab 

它如果出現這樣的情況,會更容易:

<tabset> 
    <tab heading="Info" [routerLink]="['info']"></tab> 
    <tab heading="Users" [routerLink]="['users']"></tab> 
    <tab heading="Billing" [routerLink]="['billing']"></tab> 
</tabset> 
<router-outlet></router-outlet> 

有沒有人爲此提供解決方案?這個問題應該是很常見......

回答

5

我已經解決了這個對我自己這(容易)的方式完全沒有NG2的自舉,只是本地的自舉CSS類,routerLinkrouterLinkActive

<ul class="nav nav-tabs"> 
    <li class="nav-item"> 
     <a class="nav-link" 
     routerLinkActive="active" 
     [routerLink]="['info']">Info</a> 
    </li> 
    <li class="nav-item"> 
     <a class="nav-link" 
     routerLinkActive="active" 
     [routerLink]="['users']">Users</a> 
    </li> 

    ... 

    </ul> 
    <div class="tab-content"> 
    <div class="tab-pane active"> 
     <router-outlet></router-outlet> 
    </div> 
    </div> 
+0

謝謝,我也一樣。我想我會從我的應用程序中刪除ng2-bootstrap並使用'vanilla twitter bootstrap'。 –

+2

我們在項目中保留'ng2-bootstrap'。有很多有價值的模塊,如AlertModule,DropdownModule,PaginationModule,TooltipModule,TypeaheadModule,ModalModule,DatepickerModule。而且可以使用TabsModule進行簡單的非路由器導航。 – hgoebl

1

嘿我已經想出瞭解決這個問題的方法。 嘗試以下操作:

 <tabset class="nav nav-tabs"> 
      <tab> 
       <template tabHeading> 
        <a class="routing_link" routerLink="/dashboard">Dashboard</a> 
       </template> 
      </tab> 
      <tab> 
       <template tabHeading> 
        <a class="routing_link" routerLink="/execution">Execution</a> 
       </template> 

      </tab> 
      <tab> 
       <template tabHeading> 
        <a class="routing_link" routerLink="/history">History</a> 
       </template> 
      </tab> 
     </tabset> 

編輯

<div class="col-lg-12"> 
<tabset class="nav nav-tabs"> 
     <tab> 
      <template tabHeading> 
       <a class="routing_link" routerLink="/dashboard">Dashboard</a> 
      </template> 
     </tab> 
     <tab> 
      <template tabHeading> 
       <a class="routing_link" routerLink="/execution">Execution</a> 
      </template> 
     </tab> 
     <tab> 
      <template tabHeading> 
       <a class="routing_link" routerLink="/history">History</a> 
      </template> 
     </tab> 
    </tabset> 
</div> 
<div class="col-lg-12"> 
    <router-outlet></router-outlet> 
</div> 
+0

謝謝。你在哪裏放置''?接上你的代碼只是呈現標籤標題,或者我錯過了什麼? – hgoebl

+0

我的 '' 就在它的下面。請參閱更新 – Mathers

+0

下次我會試一試。沒有看到它的行動 - 你的解決方案接縫不會標記路線變化時的活動標籤,是嗎? – hgoebl