2017-05-17 4 views
0

私はAngular2とRouterModuleを使用しています。私の場合はセミコロンを含むAngular2ルータパラメータ

{ 
    path: 'details/:id', 
    component: DetailComponent, 
    outlet: 'details' 
} 

、パラメータIDはセミコロン含めることができます:私は、パラメータ(ID)を待っている子状態を持っている(すなわち:TEST | EN; 1000; 0)。私はのparams let taskIdFromParam = this.activatedRoute.snapshot.params['id'];を取得するために活性化ルートを使用しています。しかし、結果として、私が代わりにTESTのTEST|ENを取得しています

| EN; 1000; 0

私たちはurlSegmentに含まれるIDの残りの部分パラメータとして(Object {0: "", 1000: "", EN: ""})。私はパラメータの残りの部分を解析し、セミコロンで手動で結合しようとしましたが、アルファベット順ですので、解析するIDはTEST | 0; 1000; ENTEST | EN; 1000; 0

これは、角度ルータが子どもの状態でMatrix URL表記を使用するためです(linkを参照)。

I持って、次の質問:

  1. 子状態にをQueryParametersを使用する方法はありますか?
  2. ルータにセミコロンをエスケープしないように指示する方法はありますか?
+0

をエンコードします、私はちょうどそれが設計されている方法を変更し、技術を使用することになりparamsは使用することができ、特別な文字を使用せずに自動生成されたIDを使用して、その醜い文字列の代わりにリソースを識別します。それが本当に不可能な場合は、この機能情報をbase64-urlまたは16進数に変換して、特殊文字を含まないIDを取得してください。クエリパラメータを使用すると回避策が得られますが、それはうまく拡張されません.2つまたは3つのIDを持つ複数レベルのパスがある場合はどうなりますか? –

+0

あなたはどちらのバージョンのangular2を使用していますか? –

+0

@DheDictator 4.0.1 – DavidGSola

答えて

関連する問題