2016-08-18 74 views
0

在路由中,當我們將某個值作爲參數從一個組件傳遞到另一個組件時,傳遞的參數值將被附加到瀏覽器URL中......是否有任何方法可以避免? enter image description here如何避免輸入參數附加到angular2路由中的瀏覽器url?

在從快照連接「管理員」的例子是我從home.ts分量通過用戶名

我的路由是如下

[![export const routes: RouterConfig = \[ 
    { path: '', component: Login }, 
    { path: 'login', component: Login }, 
    { path: 'Home/:userName', component: Home }, 
    ...HOME_ROUTER_PROVIDERS 
    } 
\] 

export const HOME_ROUTER_PROVIDERS: RouterConfig = \[ 
    { 
     path: 'Home/:userName', 
     component: Home, 
     children: \[ 

      { path: 'Dashboard1', component: Dashboard1 }, 
      { path: 'Dashboard2', component: Dashboard2 }, 
      .... 
    } 
\]][1]][1] 

我home.ts在那裏我做navigate.route傳遞參數

export class Home { 
     userName: any; 
     constructor(private activatedRoute: ActivatedRoute) { 
      console.log("In constructor of Home"); 
      activatedRoute.params.subscribe(params => { 
       this.userName = params['userName'] 
      }); 
     } 
    } 
+0

路由器作業是將狀態反映到瀏覽器URL欄和狀態的URL。如果您不想將其中的部分內容反映在URL欄中,請不要使用路由器來維護此狀態。除了@MadhuRanjan的答案,請參閱https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service –

回答

2

您可以在您登錄組件使用它創建一個UserService你可以通過設置一些variabl e決定登錄用戶是否是管理員。

而當您的家庭組件被路由時,您可以從UserService中讀取角色值,並使用該值執行操作。

希望這有助於!