2017-04-14 5 views
1

현재 활성 경로를 변경하지 않고 URL에서 경로 매개 변수를 업데이트하는 방법을 찾으려고합니다. 누군가가 :pageId가 변경 될 때활성 경로를 변경하지 않고 URL 경로 매개 변수를 각도 2로 변경하십시오.

는 내가 해결하기 위해 노력하고있어 문제가
{ 
    path: 'pages/:pageId', 
    component: PageComponent, 
    children: [ 
    { 
     path: 'sections/:sectionId', 
     component: PageSectionComponent, 
     children: [ 
     { 
      path: 'details', 
      component: PageSectionDetailsComponent 
     }] 
    }] 
} 

, 나는 URL을 변경하는 동안 자신의 활성 경로를 유지하려면 예를 들어, 나는 다음과 같은 경로를 말한다.

pages/999/sections/123/details => pages/777/sections/123/details 
pages/999/sections/123   => pages/777/sections/123 

이 또한 내가 :sectionId이 작업을 할 필요가 :에서가 999 777에서 :pageId을 변경하는 경우 그래서, 자신의 경로 변경해야합니다. 예를 들어, :sectionId (123) 456에서 이동 :

pages/999/sections/123/details => pages/999/sections/456/details 
pages/999/sections/123   => pages/999/sections/456 

내가, 그래서 절대 링크를 유지하기가 매우 어려울 것이다 생략 내 프로젝트에 여러 자식 루트가 있습니다. 어떻게 든 현재 ActivatedRoute을 사용할 수 있기를 바랄뿐입니다. 업데이트중인 단일 매개 변수를 변경 한 다음 Router을 사용하여 해당 경로를 탐색하십시오.

도움을 주시면 대단히 감사하겠습니다.

추가 정보 :

내가 사용 각도 4.0.0

이 내가 해결하기 위해 노력하고있어 문제의 핵심에 도착 비슷한 질문이지만,이 최신이있다 : Change a single route parameter on the current route in Angular 2

답변

2

응용 프로그램에서 가장 적합한 코드 또는 HTML에서 새 필수 매개 변수로 업데이트 할 수 있습니다. HTML에서

, 당신은 routerLink 지시어와 함께 할 것 :

<a [routerLink]="['/products', product.id]">{{product.productName}}</a> 

또는 같은 코드와

:

this.router.navigate(['/pages', this.pageId, '/sections', this.sectionId]); 

:

this.router.navigate(['/products', this.product.id]); 

아니면 예와

(나는 처음 질문을 오해했다고 생각합니다.)

+0

나는 이것이 내 모든 자식 경로에서 작동하지 않을 것이라고 생각합니다. 예를 들어,'this.router.navigate ([ '/ pages', pageId, '/ sections', sectionId])'를 실행하면'/ pages/999/sections/123/details'는'/ pages/pages/777/sections/123/details' 대신/777/sections/123'을 사용하십시오. 내가 가지고있는 문제는 내 위치 변경을 하드 코딩하지 않고 * 전체 * 활성 경로를 유지하는 방법입니다. – SnailCoil

+0

경로는 어떻게 활성화 되나요? 어딘가에서 코드를 게시하거나 플 런커를 제공 할 수 있습니까? – DeborahK

+0

필수 매개 변수 대신 쿼리 매개 변수를 사용할 수도 있습니다. 즉, 경로 구성에서 ID를 제거하고 두 개의 ID가있는 개체 인 쿼리 매개 변수 집합으로 전달하는 것입니다. – DeborahK