2016-04-12 2 views
2

У меня есть левый навигационный компонент, который импортируется в мой основной AppComponent. То, что я пытаюсь реализовать, - это возможность щелкнуть ссылку в левом навигаторе и загрузить ее DataComponent в маршрутизатор-выход родительского AppComponent.Как я могу настроить маршрутизатор-выход из дочернего компонента?

Мой родитель AppComponent выглядит следующим образом:

import { LeftNavComponent } from 'app/left-nav/left-nav.component'; 
import { DataComponent } from 'app/data/data.component'; 

@Component({ 
    selector: 'main', 
    template: '<left-nav></left-nav><router-outlet></router-outlet>', 
    directives: [ROUTER_DIRECTIVES, LeftNavComponent] 
}) 
@RouteConfig([ 
    {path:'/data', name: 'Data', component: DataComponent} 
]) 

Мой ребенок LeftNavComponent который выглядит следующим образом:

@Component({ 
    selector: 'left-nav', 
    directives: [ ROUTER_DIRECTIVES ], 
    providers: [ ROUTER_PROVIDERS ], 
    template: '<a [routerLink]="[ 'Data' ]">Show Me Data</a>'  
}) 

и DataComponent я пытаюсь загрузить в маршрутизатор-выходе выглядит следующим образом :

@Component({ 
    selector: 'data', 
    templateUrl: 'This is where the data will be' 
}) 

Когда я нажимаю на ссылку, url изменяется на/данные, но кажется, что DataComponent фактически не загружен, потому что текст «Это то, где данные будут», не отображается.

Я проверил, что RouteConfig работает правильно, поскольку текст появляется, если я помещаю ссылку маршрутизатора в шаблон AppComponent, поэтому проблема заключается в том, что ссылка на маршрутизатор находится в дочернем компоненте.

Любая помощь была бы потрясающей.

ответ

0

Я думаю, что это то, что вы хотите:

template: '<a [routerLink]="[ '../Data' ]">Show Me Data</a>' 

или, если это маршрут на корневой компонент:

template: '<a [routerLink]="[ '/Data' ]">Show Me Data</a>' 
+0

Спасибо за ответ. Я пробовал оба, но ни один из них не работает./Данные перемещаются по правому URL-адресу, но не загружают компонент. ../Data выбрасывает это исключение: Ссылка "[" ../Data "]" имеет слишком много "../" сегментов. – amuramoto

+0

'[ROUTER_PROVIDERS],' следует добавлять только в 'bootstrap' ** или ** в корневой компонент' AppComponent', но ** никогда ** ни на какой другой компонент. –

+0

Были и другие проблемы в вашем коде. 'templateUrl' вместо' template' (возможно, только для копирования-вставки). '' 'вокруг шаблона' left-nav' конфликтует с '' 'around' 'data''. Я изменил внешнюю сторону на обратную сторону (возможно, это тоже проблема с копией). [** Рабочий Plunker **] (https://plnkr.co/edit/9ljkpB?p=preview) –

Смежные вопросы