Для тих, хто як я знайшов це питання, наступне може бути корисним.
У мене була подібна проблема і спочатку спробував використовувати location.go та location.replaceState, як запропоновано в інших відповідях тут. Однак я зіткнувся з проблемами, коли мені довелося перейти на іншу сторінку програми, оскільки навігація була відносно поточного маршруту, а поточний маршрут не оновлювався location.go або location.replaceState (маршрутизатор нічого не знає про те, що вони роблять із URL-адресою)
По суті, мені було потрібне рішення, яке DIDN'T перезавантажує сторінку / компонент, коли параметр маршруту змінився, але DID внутрішньо оновить стан маршруту.
Я в кінцевому підсумку використовував параметри запиту. Більше про це можна дізнатися тут: https://angular-2-training-book.rangle.io/handout/routing/query_params.html
Тож якщо вам потрібно зробити щось на зразок збереження замовлення та отримання ідентифікатора замовлення, ви можете оновити URL-адресу сторінки, як показано нижче. Оновлення розташування центру та пов’язаних даних на карті було б подібним
// let's say we're saving an order. Initally the URL is just blah/orders
save(orderId) {
// [Here we would call back-end to save the order in the database]
this.router.navigate(['orders'], { queryParams: { id: orderId } });
// now the URL is blah/orders?id:1234. We don't reload the orders
// page or component so get desired behaviour of not seeing any
// flickers or resetting the page.
}
і ви стежите за цим методом ngOnInit, як:
ngOnInit() {
this.orderId = this.route
.queryParamMap
.map(params => params.get('id') || null);
// orderID is up-to-date with what is saved in database now, or if
// nothing is saved and hence no id query paramter the orderId variable
// is simply null.
// [You can load the order here from its ID if this suits your design]
}
Якщо вам потрібно перейти безпосередньо на сторінку замовлення з новим (не збереженим) замовленням, ви можете зробити:
this.router.navigate(['orders']);
Або якщо вам потрібно перейти на сторінку замовлення для існуючого (збереженого) замовлення, ви можете:
this.router.navigate(['orders'], { queryParams: { id: '1234' } });