Angular 2, How to display current route name? (router 3.0.0-beta.1)
10,665
If your routes are configured with your route name in the data property like this:
{
path: 'somepath',
component: SomeComponent,
data: {
name: 'My Route Name'
}
}
In your app.component.ts
you can import 'rxjs/add/operator/filter';
+ import { ActivatedRoute, Router, NavigationEnd } from '@angular/router';
and do the following:
constructor(
private route: ActivatedRoute,
private router: Router
) { }
ngOnInit() {
this.router.events
.filter(event => event instanceof NavigationEnd)
.subscribe(event => {
let currentRoute = this.route.root;
while (currentRoute.children[0] !== undefined) {
currentRoute = currentRoute.children[0];
}
console.log(currentRoute.snapshot.data);
})
}
This will listen for NavigationEnd
events and then traverse down to the current route so that you can access the data
of that route.
If you are on /somepage
using the code above, it should print { name="My Route Name"}
in your console.
Related videos on Youtube
Author by
Adrian Moisa
Tech Lead, Project Manager, Founder at Qualia Vision
Updated on September 15, 2022Comments
-
Adrian Moisa over 1 year
I want to display the name of the route in the
app.component.html
template. I'm looking for a simple solution, something that can be written like this:{{router.currentRoute.name}}
My current router config:
export const routes: RouterConfig = [ { path: '', redirectTo: '/catalog', pathMatch: 'full' }, { path: 'catalog', name: 'Catalog', // Is this property deprecated? component: CatalogComponent }, { path: 'summary', name: 'Summary', component: SummaryComponent } ];
-
Günter Zöchbauer over 7 yearsThere are no route names in the new router.
-
Günter Zöchbauer over 7 yearsThe
data
parameter could be used for that. angular.io/docs/ts/latest/api/router/index/…
-
-
Ivan over 7 years
TypeError: this.router.events.filter is not a function
-
Bjorn 'Bjeaurn' S about 7 yearsDon't forget to
import
thefilter
function fromrxjs