I would like to use the RouteConfig to pass a variable from my AppComponent to Coursescomponent, but the "data" property in route config can only pass constant parameter, and it cannot recognize "this". Is there a way to do this?
If not, what is a best practice to pass variables to routed components?
@Component({
selector: 'app',
template: `
<router-outlet></router-outlet>
`,
directives: [ROUTER_DIRECTIVES],
})
@RouteConfig([
{ path: '/courses'
, name: 'Courses'
,component: CoursesComponent
,data:{token:this.token}} // this doesn't work -- cannot read property "token" of undefined
])
export class AppComponent {
token:string;
//I would change the token(string) in this component, and I want to pass this to the routed components
}
I have achieved this by defining a dynamic route in the constructor. Here is an example
You can use a shared service to share values between components.
See Global Events in Angular 2 for more details how to implement a shared service.
Alternatively you can inject the Router and call one of it's
router.navigateXxx()
functions where you pass additional data.