2016-08-09 13 views
3

私は、既存のアプリケーションをAngular 2に変換しており、クエリパラメータが0回以上(すなわち、繰り返して)表示される必要があるという要件があります。たとえば、並べ替え用に複数のパラメータ(#/results/data;sort=column1;sort=column2など)があるURL、またはSolrインスタンスを呼び出して複数のファセットフィルタリング(https://cwiki.apache.org/confluence/display/solr/Common+Query+Parameters#CommonQueryParameters-Thefq(FilterQuery)Parameter)を指定するURLがあります。典型的には、受信エンドポイントはそれらの反復されたパラメータを認識し、それらを配列として提示する。Angular 2 Routingの繰り返しクエリパラメータ

角度2ルーティングでどうすればいいですか?私は3.0-beta-2ルータでRC4を使用しています。 ActivatedRouteを購読してparamsを見ると、最後の繰り返し値だけが返されますが、入力された内容がLocation.path()から完全なURLが渡されていることがわかります。私はあなたがことだと思い、次のURL

https://localhost:44300/#/search;fq=efg:456;q=xyz;fq=abc 

console.log(this.location.path(false));与え例えば

は、/search;fq=efg:456;q=xyz;fq=abc

示しだけObject {fq: "abc", q: "xyz"}は、ビュー間で複雑なデータを渡すために

this.route.params.subscribe(params => { 
    console.log(params); 
}); 

答えて

2

更新

これは既にしばらくために支持されています。

orginal

これは、現在サポートされていません。
結局、複数の値のサポートを受けるための未解決の問題があります。

https://github.com/angular/angular/issues/9477

+0

迅速な対応をありがとうございます。 – Jason

+0

これは現在サポートされています:https://github.com/angular/angular/pull/11373 – jcroll

+0

@jcroll great!フィードバックをお寄せいただきありがとうございます –

0

に戻って与えていますクエリパラメータではなく各コンポーネントに注入されたサービスを使用する方が適しています。

+0

投稿はビュー間でデータを渡すこととは関係ありません。 URLを構築し、パラメータ名を繰り返すことができる*単一のビュー*にパラメータを渡すことと関係しています。 – Jason

1

更新:これは今fixedする必要があります。

this.route.params.subscribe(params => { 
    // assuming ?foo=a&foo=b&bar=c 
    // should return an object {'foo': ['a', 'b'], 'bar': 'c'} 
    console.log(params); 
});