2017-01-01 11 views
1

2番目のURLコンテンツ全体を取得する最適な方法は、基本的にはparamsとqueryParamsが必要です。今すぐ私はここにこだわっています:ActivatedRoute paramとqueryParamをAngular 2で取得する

ngOnInit() { 
this.activatedRoute.queryParams.subscribe(queryParam =>{ 
    console.log(queryParam); 
}); 
this.activatedRoute.params.subscribe(params =>{ 
    const category = params['category']; 
    this.seoService.setTitle(category); 

    // This is wrong because i also need queryParams here 
    this.categoryService.updateCategory(category); 

    }); 
    } 
} 

これは私が思い付くことができる最高です。 は、私はこのようなurl`sを目指す/カテゴリ名?ページ= 1 & SORTBY =何か&サイズ= 30 &はsortOrder = ASC & L = UTF-8

私はactivatedRouteのうち、次の値を取得しようとしていますすべての情報を含むオブジェクトをアセンブルし、バックエンドサービスにコールします。

答えて

2

あなたはcombineLatestとの両方を取得することができます。

Rx.Observable.combineLatest(
    this.activatedRoute.queryParams, 
    this.activatedRoute.params) 
.subscribe(([queryParam, params]) => { 
    ... 
}); 
0

私は前の回答を受け入れましたが、それはそれはqueryParamsとの問題を抱えていたが判明しました。時にはqueryParamsが存在しないことがあり、そのために、私はconsistLatestの代わりにwithLatestFromを使用して値が一致しませんでした。

this.activatedRoute.params.withLatestFrom(this.activatedRoute.queryParams) 
          .subscribe(([params,queryParam ]) =>{ 
      const category = params['category']; 
      let urlSearchParams : URLSearchParams = this.assembleSearchParams(queryParam); 
      ... 
} 
関連する問題