2017-08-09 88 views
0

它是這樣的多重斜線...查詢參數在URL

BASE

角4.2.1
角CLI 1.0.3

問題

我已將網址路由定義爲path: 'shop/:shopId',

我有一個shop component。在商店組件中,我正在閱讀shopId並將其傳遞給API。一切安好。

的店的網址,可以smething像有時以下

  1. /店/女性
  2. /店/女性/襯衫
  3. /店/人/鈦/手錶

#2和012的情況下我無法獲得women/shirtsmen/titan/watches作爲shopId。

注意:我對URL沒有任何限制, 它可以達到10到15個參數,因此定義10到15條路線會很混亂。

它轉到具有2,3或4個slaces的另一個URL。

我的問題是,是否有可能得到shop/之後的所有內容爲shopId

如果是,如何?

如果否,可能是什麼解決方案,我應該爲2,3,4,5或6個參數創建單獨的路線嗎?

+0

如果要處理多個這樣的段的URL,那麼你就應該相應地設置了路線...我想你實際上沒有一個類別它被命名爲'titan/watches',但是它們有兩個不同的類別,主要和子類別,因此您應該設置您的系統以將它們作爲兩個單獨的值來接受;將它們混合成一個沒有意義。 – CBroe

+0

我認爲你應該根據需要定義儘可能多的路徑,但都指向相同的組件。 – Ploppy

+0

@Ploppy目前我只是這樣做的,我確定我的想法是否可行。謝謝 – Rakeschand

回答

1

這是你的路線

{ 
    path: 'shop', 
    component: ShopParentComponent, 
    children : [{ 
     path: '**', 
     component: ShopComponent 
    }] 
} 

我已經定義shop父路徑,並定義了**子路由。孩子使用ShopComponent作爲組件,父母使用ShopParentComponent

在你ShopComponent構造我檢測URL變化使用這樣

import { Router, ActivatedRoute, ParamMap, NavigationStart, NavigationEnd } from '@angular/router'; 

_router.events.subscribe((val) => { 
    console.log(val); 
    if(val instanceof NavigationEnd) { 
     var url = this._router.url; 
     //do anything with url 
    } 
}); 

導入的路由這將讓你的當前路由

例如在這種情況下,路線

http://localhost/shop/a/b/c/d 

它會給你

/shop/a/b/c/d 

您可以輕鬆地操縱這個網址爲您的使用。

想知道是什麼你父組件成立,只是一個

<router-outlet></router-outlet> 
+0

謝謝,這對我很有用。 – Rakeschand