2017-02-10 105 views
0

我有两个组件,我想发送一个变量从一个到另一个使用路由参数。在我的第一部分我用这个功能来发送ID:阅读路由参数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 [“身份证”删除“+” ]

4

因为console.log(this.id);在您从路线获取值之前有效。把console.logsubscribe功能

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

当我把console.log放在里面的时候,我仍然得到null – Ayane