2017-10-19 4 views
1

다른 URL 접두사가있는 중첩 모듈이 있습니다. 이제 접두어를 지정하지 않고 한 모듈 내에서 탐색하려고합니다 (내 모듈에서 어느 접두사에 액세스 할 수 있는지 알고 싶지 않습니다). 이 내 nested.module에 대한 경로입니다각도로 서브 모듈을 기준으로 이동

const APP_ROUTES: Routes = [ 
    { 
     path: '', 
     children: [ 
      { path: '', component: MainComponent }, 
      { path: 'nested', loadChildren: 'app/nested/nested.module#NestedModule' } 
     ] 
    } 
]; 

export const routing = RouterModule.forRoot(APP_ROUTES, { useHash: true }); 

:

은 내 app.module에 대한 경로입니다

지금은/#/중첩에서 탐색하는 예를 들어 원하는
const APP_ROUTES: Routes = [ 
    { 
     path: '', 
     component: NestedComponent, 
     children: [ 
      { path: '', component: NestedSubComponent }, 
      { path: 'sub', component: NestedSubComponent }, 
      { path: 'sub/:id', component: NestedSubComponent } 
     ] 
    } 
]; 

export const routing = RouterModule.forChild(APP_ROUTES); 

/sub에서/#/nested/sub/123으로 변경하십시오. 이것을 어떻게 할 수 있습니까? 나는 내 서브 모듈에 중첩되어 있는지 (예 : 서브 루틴이// sub인지// sub/: id인지) 또한 중첩 된 접두어를 사용하고 싶지 않다는 것을 알지 못합니다. 다른 서브 모듈에도 사용할 수 있습니다.

답변

0

Router.navigate() 메서드의 두 번째 매개 변수를 사용하여 relativeTo 옵션을 지정하면 해당 경로로 상대적으로 탐색합니다.

constructor(private router: Router, 
      private activatedRoute: ActivatedRoute) {} 

goDeeper() { 
    this.router.navigate(['next-nested-route'], {relativeTo: this.activatedRoute}); 
} 

goBack() { 
    this.router.navigate(['../'], {relativeTo: this.activatedRoute}); 
} 

또한 ActivatedRoute 암시, 그냥 첫 번째 슬래시를 넣지 마십시오 설정 한 routerLink 지시어를 사용할 수 있습니다. 각 문서에

<a routerLink="/next">absolute</a> 
<a routerLink="next">relative next</a> 
<a routerLink="..">relative back</a> 

이것에 대해 더 :

+0

https://angular.io/guide/router#!#relative-navigation는 답변 주셔서 감사합니다. relativeTo 속성을 사용할 수 있다는 것을 알고 있지만 내 중첩 수준 (모르겠다)에 따라 다른 경로를 사용해야합니다. 예를 들어 내 ActivatedRoute이 "/"이면 "sub/123"을 사용하고 "/ sub"인 경우 "/ 123"을 사용합니다. 그래서 내가 원하는 것은 NestedComponent에 상대적인 Route입니다. – Benedikt

+0

당신이 절대 경로를 필요로하는 것보다 ... –

+0

이 점은 구성 요소 내에서'relativeTo'를 사용하여 자식 경로를 탐색 할 수 있다는 것입니다. 서로 다른 레벨의 중첩에 같은 구성 요소를 원한다면 절대 경로를 사용하는 것이 유일한 방법입니다 ... –

관련 문제