2017-10-25 2 views
2

늦게까지 각도 라우터에 많은 변경이있었습니다.이 문제를 해결하는 방법을 모릅니다.상위 구성 요소에서 하위 구성 요소로 param 가져 오기

내가 주소 표시 줄에 "이벤트 ID"라는 내 부모 요소에 PARAM이 : 그것은 값이다이 경우

http://localhost:4200/event/1 

내가 라우팅에 선언 방법은 다음과 1.

입니다입니다 구성 요소 :

:

{ path: 'event/:eventId', loadChildren: './event/event.module#EventModule', canActivate: [AuthGuard] }, 

그래서 나는 길 아래 라인 하위 구성 요소가

내 구매 계획 구성 요소에서 어떻게 이벤트 ID를 얻을 수 있습니까?

나는 시도했다 :

import { ActivatedRoute } from '@angular/router'; 
export class PurchasePlansComponent implements OnInit { 
    eventId: number; 
    constructor(private activatedRoute: ActivatedRoute) { 
    this.subscription = activatedRoute.parent.params.subscribe(
     (param: any) => { 
     this.eventId = param['eventId']; 
     } 
    ); 
    } 
    ngOnInit() { 
    alert(this.eventId); 
    } 
} 

하지만이 단지 작품을 나는이 수준에있어 경우 :

http://localhost:4200/event/1/event-home 

하지만이 수준에있어 경우에 작동하지 않습니다 :

http://localhost:4200/event/1/event-travel-agents/purchase-plans 
+0

이 같은 시도 (순간에 테스트 할 수 있지만, 당신에게 아이디어를 제공 할 수 없습니다) :'activatedRoute.snapshot.parent.params를 [ 'eventId']'? –

+0

[공유 서비스] (https://rahulrsingh09.github.io/AngularConcepts/faq)가 아니라면 동일한 구성 요소를 다루는 것처럼 작동해야한다고 생각하면 오류가 발생하지만 작동해야한다고 생각합니다. . –

+0

@deezg 스냅 샷을 사용하면 매개 변수가 동적으로 변경되는 시나리오에서 작동하지 않을 수 있습니다. 변경 사항을 구독해야합니다. –

답변

0

귀하의 모든 도움에 감사드립니다. 대답은 매우 길었습니다. 가입없이 선이었다 : paramsInheritanceStrategy의 새로운 기능이 각도 5.2 릴리스에서는

this.eventId = this.activatedRoute.parent.snapshot.parent.params.eventId; 
0

, 즉 지금 문제가 당신을 도울 수 있습니다. 그것은 라우터가 부모로부터 자식에게 PARAMS, 데이터 및 해결 데이터를 병합하는 방법을 정의

@NgModule({ 
    import :[RouterModule.forRoot(router,{paramsInheritanceStrategy :'always'})] 
}) 

을 다음과 같은

당신은 그것을 사용할 수 있습니다

가능한 옵션은 다음과 같습니다

1.emptyOnly :기본값이 인 경우에만는 부모 PARAMS의 무조건 상속을 할 수 있습니다 : 경로 작거나 구성 요소가없는 항상

2에 대한 herits 부모 PARAMS. 다음과 같은 구성 요소에서

당신은 그것을 사용할 수 있습니다

constructor(private route: ActivatedRoute) {} 

ngOnInit() { 
    this.eventId = +this.route.snapshot.paramMap.get("eventId"); 
    }