2017-04-04 3 views
0

나는 primeng 데이터 테이블을 가지고 있으며 선택한 행을 라우터를 통해 다른 페이지로 전달하려고합니다. 예 : 학생 데이터 테이블이 있는데 학생 행을 하나 선택하고 제출 버튼을 클릭하면 StudentDetails 페이지에 세부 정보가 표시됩니다.Angular2 Primeng 라우터를 사용하여 다른 구성 요소로 전달되는 데이터 테이블을 선택한 행

여기에서 행을 선택할 수 있으며 학생 구성 요소에 데이터를 전달할 수 있습니다. 그러나 학생 세부 정보 구성 요소에 데이터를 전달할 수 없습니다.

export class Student { 

selectedRow:Student;// I can able to assign selected row here 

navigateStudentDetail(){ 

this.router.navigate(['./studentdetail']); 

} 

내가 할 수 쿼리 PARAM를 사용하여 studentId을 통과 할 수 있습니다, 그러나 나는 studentdetails 구성 요소에 내 학생 개체를 전달하고자합니다. 그러나 그것을 할 수 없습니다.

쉽게 해결할 수 있습니까? 제발 도와주세요

+0

것은 내가이 문제를 해결 제공자를 사용 .. 첫 번째 구성 요소로 보내 s의. http://stackoverflow.com/questions/35478994/angular-2-passing-object-via-route-params-possible link 나를 많이 도와주었습니다. 감사 – stackUser44

답변

0

아마도 일부 구성 요소를 다른 구성 요소로 전달하기 위해 서비스를 사용하는 것이 과도합니다. NavigationExtras를 사용하여 탐색하려는 URL과 함께 맞춤 데이터를 추가 할 수 있습니다. 구성 요소에서

import { NavigationExtras} from '@angular/router'; 
//You will need navigations extras from Router. 

곳 ..이

constructor(
private route: ActivatedRoute, 
private router: Router){} 

처럼 생성자에서 대상 구성 요소의 다음

 let dataNav:NavigationExtras={queryParams:"somekey":"someValue", 
"someOtherKey":"someOtherValue"}}; 
    this.router.navigate(['/path/whatever/'],dataNav); 

..

import { Router, ActivatedRoute, Params } from '@angular/router'; 
//you will need something like this 

인스턴스화의 ActivatedRoute 마침내 얻을 매개 변수

ngOnInit() { 
this.route.queryParams 
.subscribe(params =>{ 
    this.someOtherKeyReceived=params['someOtherKey'] 
}); 

}