2017-02-10 7 views
0

У меня есть два компонента, и я хочу отправить переменную от одного к другому с использованием параметра маршрута. В моем первом компоненте я использую эту функцию, чтобы отправить идентификатор:Прочитать параметр маршрута angular2

sendId(id : string) : void { 
    this.router.navigate(['/component2', id]); 
} 

Мой модуль маршрутизации выглядит следующим образом:

const routes: Routes = [ 
{ path: 'component2/:id', component: Component2}, 
{ path: '**', redirectTo: '' } 
]; 

@NgModule({ 
imports: [ RouterModule.forRoot(routes) ], 
exports: [ RouterModule ] 
}) 

export class AppRoutingModule {} 

И в моем втором компоненте я пытаюсь прочитать это так:

import { Router, ActivatedRoute, Params } from '@angular/router'; 

export class Component2 implements OnInit { 
    id: string; 

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

ngOnInit() { 
    this.route.params.subscribe(params => { this.id = +params['id']; 
    }); 

    console.log(this.id); 
} 

Но я получаю нулевое значение. Что мне не хватает?

ответ

1

мне удалось это сделать, изменив свой COMPONENT2 код, как это:

import { Router, ActivatedRoute, Params } from '@angular/router'; 

export class Component2 implements OnInit { 
    id: string; 
    private sub: any; <---- add subcriber 

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

ngOnInit() { 
    this.sub = this.route.params.subscribe(params => { 
     this.id = params['id']; <---- remove '+' 
}); 

console.log(this.id); 
} 

Я добавил абонента и удаляют «+» из Params [ «ID» ]

4

Потому что console.log(this.id); работает, прежде чем вы получите стоимость с маршрута. Поместите console.log в функцию subscribe

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

Я все еще получаю null при помещении console.log внутри – Ayane

Смежные вопросы