2016-04-05 17 views
2

Bir ana üst bileşen, yerleşik bir üst nav, ayrı bir kenar çubuğu nav bileşeni ve ana bileşen için <router-outlet>'u barındıran ana içerik div içeren ana bir ana bileşene sahibim. Ana ana bileşendeki yönlendirici çıkışını değiştirmek için, çocuk nav bileşeninin içindeki bağlantıların nasıl olacağına kafamı sokmaya çalışıyorum.Ana bileşen için yönlendirmeyi denetleyen Angular2 alt bileşeni

`` `

Main Component 
@Component({ 
    selector: 'app', 
    templateUrl: 'mainComponent.html', 
    encapsulation: ViewEncapsulation.None, 
    directives: [ROUTER_DIRECTIVES,ChildSidenav], 
}) 
@RouteConfig([ 
    { path: '/', component: HomeCmp, as: 'Home' }, //for top nav 
    { path: '/about', component: AboutCmp, as: 'About' }, //for top nav 
    { path: '/user', component: UserCmp, as: 'User'}, //for top nav 
    { path: '/data/...', component: SidenavBasicUsage, as: 'Data'}, //link in child component 
    { path: '/dates', component: SelectDatesComponent, as: 'Dates'}, //link in child component 
    { path: '/edit/paths', component: EditPathsComponent, as: 'EditPaths'}, //link in child component 
    { path: '/edit/filters', component: EditFiltersComponent, as: 'EditFilters'}, //link in child component 
]) 
export class AppCmp {} 

Child Component 
@Component({ 
    selector: 'left-control', 
    templateUrl: 'sidebar.component.html', 
    moduleId: module.id, 
    directives: [ROUTER_DIRECTIVES], 
}) 
@RouteConfig([ 
    {path: '/',name: 'Data',component: SelectDataComponent,useAsDefault: true}, 
    {path: '/dates',name: 'Dates',component: SelectDatesComponent}, 
    {path: '/edit/paths',name: 'EditPaths',component: EditPathsComponent}, 
    {path: '/edit/filters',name: 'EditFilters',component: EditFiltersComponent} 
]) 
export class SideNavComponent{} 

` ``

+0

Nasıl gezinmek istersiniz? Yönlendirici.navigateXxx() 'veya' '? –

cevap

1

Bütün bu yöntemlerin hiç denemedim ama onlar çalışması gerekir düşünüyorum: [routerLink]="..." ile

import {Router} from 'angular2/router' 

... 

constructor(private router:Router) {} 

someMethod() { 
    this.router.parent.navigate(['About']); 
    this.router.navigate(['/About']); 
    this.router.navigate(['../About']); 
} 

aynı işleri (ilk örnek hariç)

+0

Yönlendirici nereden geliyor? 'Açısal2/yönlendirici' den almaya çalıştım ve orada değil. – blacknight811

+0

Cevabımı güncelledim. Ayrıca ': Router' yerine ': router' yapısında da bir yazım hatası vardı. –

+0

Tamam Çocuk nav bileşeninde '' someMethod''' yöntemini tetikleyen bir tıklama olayı kullanarak bunu yapabildim. Bunu yaptığınız bir şey, bunu '' 'routerLink''' kullanan bir' '' 'router-link-active''' kutusudur. – blacknight811

İlgili konular