私は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持って、次の質問:
- 子状態にをQueryParametersを使用する方法はありますか?
- ルータにセミコロンをエスケープしないように指示する方法はありますか?
をエンコードします、私はちょうどそれが設計されている方法を変更し、技術を使用することになりparamsは使用することができ、特別な文字を使用せずに自動生成されたIDを使用して、その醜い文字列の代わりにリソースを識別します。それが本当に不可能な場合は、この機能情報をbase64-urlまたは16進数に変換して、特殊文字を含まないIDを取得してください。クエリパラメータを使用すると回避策が得られますが、それはうまく拡張されません.2つまたは3つのIDを持つ複数レベルのパスがある場合はどうなりますか? –
あなたはどちらのバージョンのangular2を使用していますか? –
@DheDictator 4.0.1 – DavidGSola