I have a route with a parameter, when going to the page /users/123 where 123 is the parameter the ngOnInit is called, I get my parameter and I call my method to get the user.
However, when I'm on that page and I click a second link /users/456 then the ngOnInit is not called anymore (because that page is already instantiated). So without ngOnInit I can't get the route parameter and can't call my method to get the user.
If I go to /users/123, then to /home, then to /users/456, it works obviously.
What do I have to use to make sure the function that gets the parameter and gets the user is ALWAYS called even if I'm already on the same page?
Ok sorry guys, I was calling my get user outside of the activatedRoute callback.
This is correct:
What I did was:
You can use subscriber
route.params
to listen the param's change.Params is an Observable. So you only have to subscribe once to the observable and everytime the parameters change, you get notified.
You also need to import ActivatedRoute and Params
OnInit
is invoked only once when the directive is instantiated.For watch route params use
ActivatedRoute
.Don't forget to import:
Read more about OnInit: OnInit - ts - API
Read more about ActivatedRoute: ActivatedRoute - ts - API