2016-08-12 3 views
0

나는 아래 경로가 같은 경로 구분 기호를보고 각 라우터를하지 마십시오Angular2 - 별도의 경로 세그먼트

path: 'Foo/:Address'

Address 매개 변수는 다음과 같이 문자열을 포함 할 수 있습니다

boo/bar/a 또는를 boo/b

그러나 내 코드가 위 주소 중 하나에 라우팅되면 일치하는 경로가 없다는 예외가 발생합니다. foo, bara은 다른 경로 세그먼트가되므로 예외가 발생한다고 생각합니다. 세그먼트의 수가 무작위이고 url은 문자열 교체없이 그대로 있어야하므로 경로에서 단일 매개 변수가 필요합니다.

foo이 단일 매개 변수 인 후에 각도를 알 수있는 방법이 있습니까?

나는 버전 이하로 사용하고 있습니다 :

{ 
    path: 'address', children: [ 
     { path: '**', component: YourComponent } 
    ] 
} 

를 다음 : :이처럼 경로를 구성하는 경우

"@angular/core": "2.0.0-rc.4"

"@angular/router": "3.0.0-beta.1"

+0

쓰기를 쿼리 문자열, 경로 : 'Foo? address = : param' – shammelburg

+0

@shammelburg 옵션이 없습니다 .. URL에 그대로 넣어주세요. – Mustafa

+0

"boo/bar/a"의 "a"는 주소 매개 변수를 나타 냅니까? – shammelburg

답변

0

당신은이 작업을 수행 할 수

옵션 1 : 사용하여 구성 요소의 개별 부품을 가져 오기 :

import { ActivatedRoute} from '@angular/router'; 
... 

constructor(private route: ActivatedRoute) { 
    let addr = ''; 
    for (var i = 0; i < route.snapshot.url.length; i++) 
     addr += (addr !== '' ? '/' : '') + route.snapshot.url[i]; 

    console.log('full address', addr); 
} 

옵션 2 : 구성 요소에 잡아 (NavigationEnd 후) 라우터에서 URL 사용 : 같은

import { Router, NavigationEnd } from '@angular/router'; 
... 
constructor(private router: Router) { 
    this.router.events.subscribe(x => { 
     if (x instanceof NavigationEnd) { 
      console.log(this.router.url); 
     } 
    }); 
} 
+0

비슷한 설정이 있습니다. 그러나 세그먼트의 수는 고정되어 있지 않으므로 많은 경로를 추가하는 것은 현실적이지 않습니다. – Mustafa

+0

조금 더 많은 정보를 추가하려면 내 대답이 다시 업데이트되었습니다. – Delosdos

+0

그러나 주소 매개 변수에는 완전한 주소가 없습니다. 예를 들어 주소가'boo/bar/a '이면 주소 매개 변수는'boo' 만 나타납니다. – Mustafa

관련 문제