2016-10-10 4 views
3

Ich muss ein optionales Präfix für die Sprache angeben. So können Sie zuWie mache ich einen optionalen Root-Status in Winkel 2?

random-domain.com/

die Standardsprache wird ausgewählt (en)

und wenn Sie mit der ausgewählten Sprache

Zufalls -domain.com/ru

Sprache wird ausgewählt - ru

Und dies, um verschachtelte Routen

random-domain.com/some-rand-entity und random-domain.com/ru/some- gelten rand-Einheit

meine nicht-Arbeitslösung - ein Beispiel

const app_common: Routes = [ ...]; 
export const app_routes: Routes = [ 
    { 
    path: '', 
    component: HomeComponent, 
    resolve: { 
     settings: SettingsStore 
    }, 
    pathMatch: 'full' 
    } 
]; 

export const lang_routes: Routes = [ 
    { 
    path: ':lang', 
    component: HomeComponent, 
    resolve: { 
     languages: LanguagesStore 
    }, 
    children: app_common, 
    pathMatch: 'full' 
    } 
]; 

export const routes: Routes = [ 
    ...app_routes, 
    ...app_common, 
    ...lang_routes, 
    ...checkoutRoutes 
]; 

Antwort

1

Sie können die Routenparameter für diesen Zweck

export const app_routes: Routes = [ 
    { 
    path: '', 
    component: HomeComponent, 
    resolve: { 
     settings: SettingsStore 
    }, 
    pathMatch: 'full', 
    children: app_common 
    }, 
    { 
    path: ':lang', 
    component: HomeComponent, 
    resolve: { 
     settings: SettingsStore 
    }, 
    children: app_common, 
    } 
]; 

Siehe auch https://angular.io/docs/ts/latest/guide/router.html#!#route-parameters

+0

sollte –

+0

Ja, aber was ist mit Kindern optional sein? Withot Kinder, die arbeiten, aber mit - keine –

+0

Ich denke, Sie müssen die gleichen Kinder zu beiden Routen hinzufügen. –

1

Diese verwenden ist etwas, das mit Abfrage behandelt werden sollte Parameter

url?lang=en 

nicht mit Pfad

url/en // don't do this 
Parameter

Um Abfrageparameter in routerLinks hinzuzufügen, würden Sie tun

<a [routerLink]="..." [queryParams]="{ lang: 'en' }" >link</a> 

mit Router mit programmatisch zu tun, Sie

this.router.navigate(['...'], { queryParams: { lang: 'en' }}); 

Zum Zugriff auf die Abfrage params in einer Komponente verwenden würde, hat die ActivatedRoute eine queryParams Eigenschaft

this.route.queryParams.subscribe(params => {}) 

Wir erhalten auch können die Abfrageparameter, so dass wir sie nicht weiter anwenden müssen. Im routerLink würden wir

<a [routerLink]="..." [queryParams]="{ lang: 'en' }" preserveQueryParams>link</a> 

Im Router tun würden wir

this.router.navigate(['...'], { preserveQueryParams: true}); 

tun Was das bedeutet, das heißt, wenn der aktuelle Routenanfrage hat params angebracht, wenn wir navigieren, werden die params automatisch angebracht.

Siehe auch: