2017-08-09 87 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