Я установил следующую систему маршрутизации
export const MyRoutes: Routes = [
{path: '', redirectTo: 'new', pathMatch: 'full'},
{path: ':type', component: MyComponent}
];
и иметь следующую навигационную систему
goToPage('new');
goToPageNo('new', 2);
goToPage(type) {
this.router.navigate([type]);
}
goToPageNo(type, pageNo) {
this.router.navigate([type], {queryParams: {page: pageNo}});
}
Пример URL выглядит следующим образом
Иногда у них есть необязательный queryParams (страница)
Теперь мне нужно прочитать как параметры маршрута, так и queryParams
ngOnInit(): void {
this.paramsSubscription = this.route.params.subscribe((param: any) => {
this.type = param['type'];
this.querySubscription = this.route.queryParams.subscribe((queryParam: any) => {
this.page = queryParam['page'];
if (this.page)
this.goToPageNo(this.type, this.page);
else
this.goToPage(this.type);
});
});
}
ngOnDestroy(): void {
this.paramsSubscription.unsubscribe();
this.querySubscription.unsubscribe();
}
Теперь это работает не так, как ожидалось, посещая страницы без queryParams, а затем я посещаю страницу с помощью queryParams. "goToPageNo" вызывается несколько раз, так как я подписываюсь на queryParams внутри параметров маршрута.
Я просмотрел документацию Angular 2, у них нет ни одного примера или кодов, где одновременно реализуется подписка на параметры маршрута и queryParams.
Любой способ сделать это правильно? Любые предложения?