在URL

时间:2017-08-09 12:25:43

标签: angular parameters routes

就是这样......

BASE

Angular 4.2.1
Angular CLI 1.0.3

问题

我已将网址路由定义为path: 'shop/:shopId',

我有一个shop component。在商店组件中,我正在阅读shopId并将其传递给API。一切都很好。

BUT

商店的网址有时候会像以下一样

  1. /店铺/妇女
  2. /店铺/妇女/衬衫
  3. /店铺/人/钛/手表
  4. 如果是#2#3,我无法将women/shirtsmen/titan/watches作为shopId。

      

    注意:我对网址没有任何限制,        它可以达到10到15个参数,因此定义10到15条路线会很混乱。

    它转到另一个有2个,3个或4个slaces的URL。

    我的问题是,是否可以将shop/之后的所有内容设为shopId

    如果是,怎么样?

    如果不是,可能是什么解决方案,我应该为2个,3个,4个,5个或6个参数创建单独的路径吗?

1 个答案:

答案 0 :(得分:1)

这是你的路线

cd.amount   = chargeAmount;

我已将{ path: 'shop', component: ShopParentComponent, children : [{ path: '**', component: ShopComponent }] } 定义为父路由,并为其定义了shop子路由。 Child正在使用**作为组件,而Parent正在使用ShopComponent

ShopParentComponent构造函数中,我正在使用

检测网址中的更改
ShopComponent

像这样导入路线

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

这将为您提供当前路线

例如,在此路线的情况下

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

它会给你

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

您可以轻松操作此网址供您使用。

想知道你的父组件是什么,只有一个

/shop/a/b/c/d