2017-01-18 5 views
3

У меня есть компонент, показывающий вкладки с использованием ng2-bootstraptabset и tab.Переключить и перенести выбранную вкладку ng2-bootstrap <tabset>, <tab> с использованием углового маршрутизатора

Пример:

<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, routerLink и routerLinkActive:

<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 из своего приложения и использую «ванильный твиттер-бутстрап». –

+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

My '<маршрутизатор-выход>' находится прямо под ним. См. Обновление – Mathers

+0

В следующий раз я попробую его попробовать. Не видя этого в действии - ваше решение не позволяет пометить активную вкладку при изменении маршрута, не так ли? – hgoebl