Person
So I want to pass the person.id
to this /Person
router. How can I pass it & handle it on @RouteConfig
like params
in Angular 1
Person
So I want to pass the person.id
to this /Person
router. How can I pass it & handle it on @RouteConfig
like params
in Angular 1
Pass to router link:
Person
Handle in component:
this.route.params.subscribe( (params : Params) => { this.id = params["id"]; } );
Second way:
this.route.params.forEach( (params : Params) => { this.id = params["id"]; } );
In this example you have to inject ActivatedRoute
(e.g as route property) like that:
constructor(private route : ActivatedRoute) {}
If you subscribe - it is important to unsubscribe Observable
to prevent memory leaks.
Full example:
export class SimpleComponent implements OnInit, OnDestroy { private id : number; private route$ : Subscription; constructor(private route : ActivatedRoute) {} ngOnInit() { this.route$ = this.route.params.subscribe( (params : Params) => { this.id = +params["id"]; // cast to number } ); } ngOnDestroy() { if(this.route$) this.route$.unsubscribe(); } }
Config:
export const routes = [ ... { path : 'Person/:id', component : ...}, ... ];
Also, @RouteConfig
is deprecated.
You can pass it like
Person
In my case, directive [routerLink]
didn't work for me. So, I had to do it programmatically.
Component template:
Edit
Component Class:
import { Router } from '@angular/router'; export class PersonComponent{ constructor(private _route: Router){ } goToEdit(id){ this._route.navigate(['Person/' + id]); } }