1

다른 페이지로 이동하려면 다음 코드를 사용할 수 있다는 것을 알고 계십니까? 여기Angular2 : 라우터에서 경로 배열을 검색하는 방법은 무엇입니까?

this.router.navigate(['section1', 'section1-children', 'my-page']); 

, 당신이 알고있는 바와 같이, array의 모든 string는 관련 구성 요소를로드 모듈의 라우팅 파일에 선언 된 경로입니다.

이제 navigate 메서드를 사용하려는 구성 요소가 라우팅 경로에 대해 불가지론적인 경우 전체 현재 경로에 해당하는 문자열 배열을 검색하는 방법은 무엇입니까?

내가 좋아하는 코드를하고 싶은 다음

this.activatedRoute.pathFromRoot; 

가가를 반환 내가 ActivatedRoute 서비스,하지만 내가 찾은 유일한 유용한 방법을 사용하는 것을 시도했다

let path:Array<string> = this.router.getCurrentArray(); 
path.push('my-page'); 
this.router.navigate(path); 

는 다음과 문자열이 아닌 Route의 배열.

내 목적에 도달하는 더 좋은 방법을 알고 계십니까?

답변

2

당신은 당신은 Router 인스턴스

this.router.routerState.snapshot.url 

이 유일한 작품으로 전체 경로를 얻을 수 있어야

path = this.router.config[x].path; 

에서 항목 중 하나

this.router.navigate('../' + path); 

을 사용할 수 있습니다 이 라우트에 대해 라우터가 추가 한 구성 요소에 삽입됩니다.

+0

'config'는 내가 찾고있는 것이 아닙니다. 두 번째 방법은'navigate' 대신'navigateByUrl' 메쏘드를 사용하도록합니다. 내가 맞습니까? – smartmouse

+0

'this.activatedRoute.pathFromRoot; '가 한 번에 모든 세그먼트를 제공한다는 것을 보았을 때, 그것은 자신을 반복하는 것보다 낫습니다. 'config'는 사용 가능한 (자식) 경로를 얻으려는 것이고, 나는 당신의 질문을 약간 잘못 해석했다. 'pathFromRoot' 항목에서'path' 세그먼트를 연결하면 어떨까요? https://angular.io/docs/ts/latest/api/router/index/UrlSegment-class.html#!-path-anchor –

+0

두 가지 방법, 내 생각에는 내 생각에 "더러운"방법으로 현재 경로. 더 좋은 방법이 없다는 것은 이상한 일입니다. – smartmouse