2

Я пишу ниже кода, чтобы перемещаться между вкладками икомпонент маршрутизатора не работает с нг-самозагрузкой

<ngb-tabset> 
    <ngb-tab title="Add"> 
    <template ngbTabContent routerLink="/retail/retail-add"> 

    </template> 
    </ngb-tab> 
<ngb-tab title="Collection"> 
    <template ngbTabContent routerLink="/retail/retail-collection"> 

     </template> 
    </ngb-tab> 
    <router-outlet></router-outlet> 
</ngb-tabset> 

Он показывает вкладки, но при щелчке вкладки ни он не направляет к этому компоненту и не дает какую-либо ошибку на консоль. Пожалуйста, помогите

ответ

1

изменения:

<ngb-tab title="Add"> 
    <template ngbTabContent routerLink="/retail/retail-add"> 

    </template> 
</ngb-tab> 

С:

<ngb-tab> 
    <template ngbTabTitle> 
    <a routerLink="/retail/retail-add">Add</a> 
    </template> 
    <template ngbTabContent> 

    </template> 
</ngb-tab> 

Наконец, двигаться Router Outlet на приложение компонента и наслаждайтесь;).

+1

Пробовал этот подход (с _ng-template_ вместо _template_). Проблема в том, что переключение содержимого вкладки работает, когда я нажимаю только текст заголовка. Когда я нажимаю на любую вкладку, но не на текст заголовка, вкладка отображается как включенная, но маршрутизация не происходит, а содержимое остается на старой вкладке. – ramtech

0

Тег template был устаревшим. Это теперь ng-template:

<ngb-tab> 
    <ng-template ngbTabTitle> 
    <a routerLink="/retail/retail-add">Add</a> 
    </ng-template> 
    <ng-template ngbTabContent> 

    </ng-template> 
</ngb-tab> 
2

Чтобы решить эту проблему, щелкает только по названию вызвать изменение контента, вы могли бы использовать из tabChange event:

component.html

<ngb-tabset (tabChange)="onTabChange($event)"> 
    <ngb-tab [id]="first" [title]="First"> 
    <ng-template ngbTabContent></ng-template> 
    </ngb-tab> 
    <ngb-tab [id]="second" [title]="Second"> 
    <ng-template ngbTabContent></ng-template> 
    </ngb-tab> 
</ngb-tabset> 

component.ts

onTabChange($event: NgbTabChangeEvent) { 
    if ($event.nextId === 'first') { 
    this.router.navigateByUrl(__your_first_url__); 
    } else if ($event.nextId === 'second') { 
    this.router.navigateByUrl(__your_second_url__); 
    } 
} 

Поскольку все обсуждаемые до сих пор решения действительно не выглядят как лучшие практики, я открыл issue on GitHub that was added as a feature request.