I have router link like below:
<button class="take-a-tour-btn" [routerLink]="['/dashboard', {'showTour':'show'}]">
I want to pass parameter showTour
. But, when I do this, the parameter is visible in url
and I would like to hide it. I have gone through so many references(which says about optional parameters) ,but with no success in my case. How could I solve this?
in Angular 7 you can use History state to pass dynamic data to the component you want to navigate to, without adding them into the URL, like so :
this.router.navigateByUrl('/user', { state: { orderId: 1234 } });
or
<a [routerLink]="/user" [state]="{ orderId: 1234 }">Go to user's detail</a>
and you can get it this way
constructor() {
this.router.events
.pipe(filter(e => e instanceof NavigationStart))
.subscribe((e: NavigationStart) => {
const navigation = this.router.getCurrentNavigation();
this.orderId = navigation.extras.state ? navigation.extras.state.orderId : 0;
});
}