РЕДАКТИРОВАТЬ:
Поскольку я не знаю ваш сценарий использования, я могу только предположить, что вы пытаетесь достичь следующего:
В вашем приложении, каким-то образом, параметр запроса "категория""может быть изменено, например, нажатием на категорию.Вместо того чтобы делать
router.navigate(['/products?category=' + newlySelectedCategory]);
и, вероятно, реагировать на этот параметр запроса с помощью
import {Router, ActivatedRoute, Params} from '@angular/router';
import {OnInit, Component} from '@angular/core';
@Component({...})
export class MyComponent implements OnInit {
category: string;
constructor(private activatedRoute: ActivatedRoute) {}
ngOnInit() {
// Note: Below 'queryParams' can be replaced with 'params' depending on your requirements
this.activatedRoute.queryParams.subscribe(params => {
this.category = params['category'];
});
}
}
, вы можете сделать:
import {Router, ActivatedRoute, Params} from '@angular/router';
import {OnInit, Component} from '@angular/core';
@Component({...})
export class MyComponent implements OnInit {
category: string;
constructor(private activatedRoute: ActivatedRoute) {}
ngOnInit() {
// Note: Below 'queryParams' can be replaced with 'params' depending on your requirements
this.activatedRoute.queryParams.subscribe(params => {
this.category = params['category'];
});
}
// This will probably be called from your html code
selectCategory(category: string) {
this.category = category;
this.location.replaceState(`products?category=${category}`);
}
}
ThisКстати, маршрутизации не будет.
Один из возможных способов - не маршрутизировать, а изменить текущий URL-адрес с помощью this.location.replaceState
(при условии, что вы ввели private location: Location
в своем конструкторе) и запустить вручнуютот же процесс, который происходит, когда вы считываете параметр запроса URL.