2016-09-21 2 views
0

다음 요소가있는 HTML 템플릿이 있다고 가정 해 보겠습니다.구성 요소 내에서 쿼리 매개 변수 검색

<a [routerLink]="['/final', {issue_id: 2356254}]">SUBMIT</a> 

이 하이퍼 링크를 클릭하면이 같은 URL을 생성합니다 : 내 구성 요소의 생성자 내부에이 쿼리 매개 변수에 액세스하려고 해요

http://localhost:3000/final;issue_id=2356254 

.

export class FinalComponent { 
    constructor(private route: ActivatedRoute){ 
     this.issueId = route.params._value.issue_id; 
     console.log(this.issueId); 
    } 
} 

이것은 지금까지 작동하지만 이것이 올바른 방법이 아니라는 것을 알고 있습니다. Angular 2 Component에서 쿼리 매개 변수에 액세스하는 적절한 방법은 무엇입니까?

답변

1

ActivatedRoute을 사용하는 것이 좋습니다. 그것은 Observable 때문에 당신은 params 속성에 가입 할 수 있습니다 : GitHub의

https://github.com/Angular2Buch/book-monkey2/blob/master/src/app/book-monkey/iteration-4/http/book-details/book-details.component.ts#L23

route.snapshot에

constructor(private route: ActivatedRoute) { } 

ngOnInit() { 
    this.route.params.subscribe(params => { 
    // access route params 
    console.log(params['id']); 
    }); 
} 

샘플

매개 변수의 변경에 관심이 없다면 간단히 this.route.snapshot.params을 사용할 수 있습니다. 따라서 Observables로 처리 할 필요가 없습니다.

샘플

constructor(route: ActivatedRoute) { 
    let id = route.snapshot.params['id]; 
} 
+0

그것은했다! Angular 문서를 살펴보고이 코드를 발견했습니다. this.route.params.forEach ((params : Params) => { this.issueId = + params [ 'issue_id']; }); 하지만 귀하의 접근 방식이 훨씬 더 좋다고 생각합니다. – ssudaraka

+0

나를 위해 작동하지 않습니다, 얻을 : aot/app/app.component.ngfactory.ts (45,30) : 오류 TS2346 : 제공된 매개 변수가 호출 대상의 모든 서명과 일치하지 않습니다. – jjj

+0

@jjj이 문제에 대한 추가 정보가 있습니까? 코드 샘플 또는 이와 비슷한 것? –