2016-08-24 3 views
3

Ich arbeite an einem Projekt, wo ich zwei Sprachen für GUI benötige. Ich habe LangService, der Sätze für jede Komponente bereitstellt. Jede Komponente ruft die aktive Sprache basierend auf den aktuellen Routen- und Anfragesprachen von LangService ab.Ändern von Parametern in der Route

Meine Frage ist ... Ich muss meine "Sprachen wechseln" innerhalb meiner Navbar, die in der Hauptversion "app.component" ist. Navbar ist immer an der Spitze, so dass ich von jeder Komponente aus darauf zugreifen kann. Ich möchte in der Lage sein, auf die Schaltfläche in der Navigationsleiste zu klicken und die aktuelle Route zu ändern (aktuelle Sprache ändern). Wie ist es möglich? Ich dachte, es gibt eine Möglichkeit, route.params zu ändern. Auf diese Weise würde ich ändern route.params['lang'] = 'EN';

AppComponent.html:

<nav class="navbar navbar-default"> 
    <div class="container-fluid"> 
    <div class="navbar-header"> 
     <a class="navbar-brand" href="#">{{ title }}</a> 
    </div> 
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
     <ul class="nav navbar-nav navbar-right"> 
     <ol class="breadcrumb"> 
      <li *ngFor="let lang of langs"><a (click)="changeLanguage()">{{ lang }}</a></li> 
     </ol> 
     </ul> 
    </div> 
    </div> 
</nav> 
<router-outlet></router-outlet> 

AppComponent.ts (Wie ich dachte, es würde funktionieren):

export class AppComponent { 
    changeLanguage() { 
    // catch the route params lang 
    // change route params 
    // set new route 
    } 
} 

Antwort

2

Verwenden Navigation mit einem anderen Parameter auf den gleichen Weg zu navigieren. Wenn Sie sich in/component/subroute/en befinden und zu Spanisch wechseln, verwenden Sie router.navigate mit einem Pfad zu/component/subroute/es.

Die Routing-Dokumentation (https://angular.io/docs/ts/latest/guide/router.html#!#route-parameters) enthält ein Beispiel für das Abhören von sich ändernden Routenparametern, was Sie tun müssen, da die Komponente nicht neu geladen wird, da sich die tatsächliche Route nicht ändert, sondern nur der Parameter.

Verwandte Themen