2017-07-25 2 views
1

Dans mon application.component.ts j'ai le code ci-dessous pour obtenir le nom de l'itinéraire, mais je reçois toujours /. Quelqu'un sait-il pourquoi? Je m'attends à obtenir par exemple home, contact.Comment puis-je obtenir le nom de la route depuis app.component?

import { Component } from '@angular/core'; 
import { Router } from '@angular/router'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.scss'] 
}) 
export class AppComponent { 

    constructor(private router: Router) { 
    console.log(router.url); 
    } 
} 
+0

Retirez la chaîne par manipulation '/'. – Aravind

Répondre

6

Le composant App est uniquement initialisé et votre constructeur est exécuté lorsque l'application est chargée. D'où la raison pour laquelle il montre "/". Lorsque vous naviguez vers d'autres itinéraires, l'AppComponent reste chargé et le constructeur n'est pas exécuté à nouveau.

Si vous pouviez fournir plus d'informations sur ce que vous essayez d'accomplir, nous pourrions être en mesure de vous fournir une suggestion alternative.

Si vous voulez regarder les routes et obtenir l'URL, vous pouvez utiliser ici un observable. Quelque chose comme ceci:

this.router.events.subscribe((event: Event) => { 
    if (event instanceof NavigationEnd) { 
     console.log((<NavigationEnd>event).url); 
    } 
}); 

Ou si vous voulez juste pour des fins de débogage, vous pouvez activer le traçage comme ceci:

RouterModule.forRoot([ 
    { path: 'welcome', component: WelcomeComponent }, 
    { path: '', redirectTo: 'welcome', pathMatch: 'full' }, 
    { path: '**', component: PageNotFoundComponent } 
], { enableTracing: true }) 
+0

Je dois obtenir le nom de l'itinéraire à utiliser comme classe CSS dans chaque page au cas où je devrais personnaliser quelque chose. –

+0

J'ai mis à jour ma réponse pour montrer un exemple de l'approche observable. – DeborahK

+0

La recette actuelle est de filtrer les événements, '.subscribe (e => {if (e instanceof NavigationEnd) ...})' – estus