2016-10-10 58 views
3

我需要做一個可選的前綴指示語言。 所以,你可以去如何在角度2中創建可選的根狀態?

random-domain.com/

的默認語言將被選中(EN)

,如果你有選擇的語言

隨機-domain.com/ru

語言將被選中 - 茹

,這應該適用於嵌套路線

random-domain.com/some-rand-entityrandom-domain.com/ru/some-蘭德實體

我不工作的解決方案 - 一個例子

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 
]; 

回答

1

,您可以使用路由參數用於此目的

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, 
    } 
]; 

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

+0

應該是可選 –

+0

是的,但怎麼樣的孩子? Withot孩子工作,但與 - 沒有 –

+0

我想你需要添加相同的孩子到兩條路線。 –

1

這是應該與查詢處理參數

url?lang=en 

不與路徑參數

url/en // don't do this 

若要在routerLinks中添加查詢參數,您可以執行

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

做編程方式與Router,你會用

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

要訪問組件的查詢參數,該ActivatedRoutequeryParams財產

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

我們也可以保存查詢參數,所以我們不需要繼續應用它們。在routerLink,我們會做

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

Router我們會做

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

這裏做的事情是,當電流路線具有查詢參數連接,當我們瀏覽的PARAMS會自動連接。

另請參見: