2016-09-29 15 views
1

私のアプリでは、複数のパラメータを持つルートがあります。複数のルートパラメータを評価する角度2ルータ

http://localhost:3000/department/6/employee/45/sales?from=20160921&to=20160928 

これらのパラメータを評価するにはどうすれば最適ですか?私はしかし、これは当然のことながら、二回の負荷をトリガーするparamsActivatedRoutequeryParams

this.route.params.subscribe(params => ...load data for params); 
this.route.queryParams.subscribe(queryParams=> ...load data for queryParams); 

を購読することができます。また、私は常に上記の例の両方の情報、例えばsalesfrom/toを必要とします。

したがって、上記のコードでは、

this.route.params.subscribe(params => { 
    let queryParams = this.route.snapshot.queryParams; 
    ...load data for params/queryParams 
} 

this.route.queryParams.subscribe(queryParams => { 
    let params = this.route.snapshot.params; 
    ...load data for params/queryParams 
} 

になり、私はまだ二回負荷をトリガの問題の解決策を持っていません。

さらに悪いことに、私はまた、私はそれが

this.route.parent.parent.parent.params.subscribe(...) 

うわを見ることは珍しいことではありませんので、私のActivatedRouteにまで行く必要がどれだけ多くのレベルを把握する必要があります。とにかくそれは怠惰なロードされたコンポーネントのために分解されます。いずれにしても、少数のルートパラメータを検索するだけの定型コードがたくさんあります。

これは間違っていますか?これについてお勧めの方法はありますか?

答えて

1

あなたは、私はまだこのコードをテストしていませんのでご注意ください、以下

paramSubscription = Observable.forkJoin(
    this.route.params, 
    this.route.queryParams, 
    this.route.parent.parent.parent.params 
).subscribe(res => { 
    this.combinedParams = { params :res[0], queryParams :res[1], ancestorParam : res[2] }; 
    // Load data 
}); 

// unsubscribe from the subscription 
ngOnDestroy =() => { 
    this.paramSubscription.unsubscribe(); 
} 

をしようとします。

これが役立ちますように!

関連する問題