2016-09-28 86 views
2

在Angular 2中,有沒有一種方法可以導航並傳遞URL中未顯示的數據?Angular 2 - 在不顯示網址數據的情況下導航

我想創建一個接收復雜對象的組件,但不希望它顯示在URL中。

謝謝!

+0

設置注入組件的服務數據? – KnowHoper

+0

有一個更簡單的方法?我不想爲此做一個服務課。每次你想隱藏參數時,我都要做一個類。 –

+0

否。路由器通過URL傳遞動態數據。你可以在URL中序列化和編碼你的對象,但是你需要小心URL字符串中不允許的任何字符。 共享服務是推薦的方式,也是最乾淨的。 – KnowHoper

回答

0

是的,它可以做.. 下面是這個link的例子。

const appRoutes: Routes = [ 
    { path: 'hero/:id', component: HeroDetailComponent }, 
    { path: 'crisis-center', component: CrisisCenterComponent }, 
    { 
    path: 'heroes', 
    component: HeroListComponent, 
    data: { 
     title: 'Heroes List' 
    } 
    }, 
    { path: '', component: HomeComponent }, 
    { path: '**', component: PageNotFoundComponent } 
]; 

在這個例子中我們傳遞一個目的是,將不會顯示在url.Hope這有助於「英雄」路徑。

+0

謝謝你的回答,但是當我定義de Routes時,我需要在用戶做出某些動作時定義de數據。 –

+0

我不確定,但我們可以隨時設置appRoutes.path.data ..動態 – refactor

0

如果使用navigate方法,再加入skipLocationChange這樣的:

this.router.navigate(['/your-path'], { skipLocationChange: true }); 

如果您使用routerLink,用它作爲這樣一個屬性:

<a [routerLink]="['/your-path']" skipLocationChange></a> 

請記住如果您使用skipLocationChange,導航到新路由後瀏覽器中的路由將不會更新,因此如果用戶在瀏覽器中回訪,他將在第一個路徑之前發送到路徑。我還沒有找到解決方案。

相關問題