2017-08-09 7 views
0

で複数のスラッシュと...クエリのparamsそれはこのように書きURL

BASE

アンギュラ4.2.1
角度CLI 1.0.3

QUESTION

URLルートをpath: 'shop/:shopId',

と定義しました

私は1つ持っていますshop component。ショップコンポーネントでは、ショップIDを読んでAPIに渡しています。すべて順調。

しかし

ショップのURLは時々

  1. /ショップ/女性
  2. /ショップ/女性/シャツ
  3. /ショップ/男性/チタン/次のようにsmethingすることができます時計

#2と012の場合ショップIDはwomen/shirtsmen/titan/watchesです。

注:私はURL上の任意の制限を持っていない、 はそれが厄介になりそう10 10 15へのルートを定義するのparamsの数15件まで行くことができます。

2つ、3つまたは4つのスレーブを持つ別のURLに移動します。

私の質問は、shop/の後のすべてをshopIdとすることは可能ですか?

「はい」の場合、どうですか?

もしそうでなければ、2、3、4、5、または6個のパラメータの別々のルートを作成する必要がありますか?

+0

、その後、あなたはそれに応じてルートを設定する必要があります...私はあなたが実際のカテゴリを持っていないと仮定しないかと思っこれは 'titan/watches'という名前ですが、これはメインとサブカテゴリという2つの異なるカテゴリですから、システムを2つの別々の値として受け取るように設定する必要があります。それらを1つにまとめることはほとんど意味をなさない。 – CBroe

+0

私はあなたが必要なだけ多くのパスを定義する必要がありますが、すべてが同じコンポーネントを指していると思います。 – Ploppy

+0

@Ploppy現在私はそれをやっています、私が思っていたことが可能かどうかを確かめていました。ありがとうしかし – Rakeschand

答えて

1

これは私が親ルートとしてshopを定義し、それに**子ルートを定義している

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

あなたのルートです。子はShopComponentをコンポーネントとして使用し、親はShopParentComponentを使用しています。

私はこれがあなたにこのの場合、たとえば、現在のルート

を取得します。この

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 
    } 
}); 

インポートされたルートを使用して、URLの変化を検出していますあなたのShopComponentコンストラクタで

ルート

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

それはあなたが

/shop/a/b/c/d 

あなたは簡単に使用するためにこのURLを操作することができます提供します。

あなたの親コンポーネントを保持しているあなたは、複数のこのようなセグメントを持つURLを処理したい場合は、ちょうど1

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

ありがとう、これは私のために働く。 – Rakeschand

関連する問題