Bạn có thể điều hướng đến tuyến đường hiện tại với các tham số truy vấn mới, điều này sẽ không tải lại trang của bạn, nhưng sẽ cập nhật các tham số truy vấn.
Một cái gì đó như (trong thành phần):
constructor(private router: Router) { }
public myMethodChangingQueryParams() {
const queryParams: Params = { myParam: 'myNewValue' };
this.router.navigate(
[],
{
relativeTo: activatedRoute,
queryParams: queryParams,
queryParamsHandling: 'merge', // remove to replace all query params by provided
});
}
Lưu ý rằng trong khi nó sẽ không tải lại trang, nó sẽ đẩy một mục mới vào lịch sử của trình duyệt. Nếu bạn muốn thay thế nó trong lịch sử thay vì thêm giá trị mới vào đó, bạn có thể sử dụng { queryParams: queryParams, replaceUrl: true }
.
CHỈNH SỬA: Như đã được chỉ ra trong các nhận xét, []
và thuộc relativeTo
tính bị thiếu trong ví dụ ban đầu của tôi, vì vậy nó cũng có thể thay đổi tuyến đường, không chỉ tham số truy vấn. Cách this.router.navigate
sử dụng thích hợp sẽ là trong trường hợp này:
this.router.navigate(
[],
{
relativeTo: this.activatedRoute,
queryParams: { myParam: 'myNewValue' },
queryParamsHandling: 'merge'
});
Đặt giá trị tham số mới thành null
sẽ xóa tham số khỏi URL.
[]
thay vì['.']
để làm cho nó làm việc