Получить параметр ActivatedRoute и queryParam в Angular 2

Каков наилучший способ получить весь контент URL-адреса в 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-адресам /category-name?page=1&sortBy=something&size=30&sortOrder=ASC&L=UTF-8

Я пытаюсь получить следующее значение из activeRoute и собрать объект со всей информацией, а затем вызвать внутреннюю службу.


person SeaBiscuit    schedule 01.01.2017    source источник


Ответы (2)


Вы можете получить оба с помощью CombineLatest:

Rx.Observable.combineLatest(
    this.activatedRoute.queryParams,
    this.activatedRoute.params)
.subscribe(([queryParam, params]) => {
    ...
});
person Sergey Sokolov    schedule 01.01.2017

Я принял предыдущий ответ, но оказалось, что у него проблема с queryParams. Иногда queryParams присутствовали, иногда нет, и из-за этого у меня были противоречивые значения. Использование withLatestFrom вместо combLatest сделало свое дело.

this.activatedRoute.params.withLatestFrom(this.activatedRoute.queryParams)
                          .subscribe(([params,queryParam ]) =>{
            const category = params['category'];
            let urlSearchParams : URLSearchParams = this.assembleSearchParams(queryParam);
            ...
}
person SeaBiscuit    schedule 03.01.2017