Benim gibi bu soruyu bulan biri için aşağıdakiler yararlı olabilir.
Benzer bir sorun yaşadım ve ilk olarak location.go ve location.replaceState'i buradaki diğer yanıtlarda önerildiği gibi kullanmayı denedim. Ancak uygulamada başka bir sayfaya gitmem gerektiğinde sorunlarla karşılaştım çünkü navigasyon mevcut rotaya göreydi ve mevcut rota location.go veya location.replaceState ile güncellenmiyordu (yönlendirici hiçbir şey bilmiyor bunların URL'ye ne yaptığı hakkında)
Esasen, rota parametresi değiştiğinde DIDN'T'nin sayfayı / bileşeni yeniden yüklemesini ancak DID'nin rota durumunu dahili olarak güncellemesi gereken bir çözüme ihtiyacım vardı.
Sorgu parametrelerini kullanmayı bıraktım. Bununla ilgili daha fazla bilgiyi burada bulabilirsiniz: https://angular-2-training-book.rangle.io/handout/routing/query_params.html
Dolayısıyla, bir siparişi kaydetmek ve bir sipariş kimliği almak gibi bir şey yapmanız gerekirse, sayfa URL'nizi aşağıda gösterildiği gibi güncelleyebilirsiniz. Bir merkez konumunu ve bir harita üzerindeki ilgili verileri güncellemek benzer olacaktır.
// 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.
}
ve aşağıdaki gibi ngOnInit yöntemi içinde takip edersiniz:
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]
}
Yeni (kaydedilmemiş) bir siparişle doğrudan sipariş sayfasına gitmeniz gerekiyorsa şunları yapabilirsiniz:
this.router.navigate(['orders']);
Veya mevcut (kaydedilmiş) bir sipariş için doğrudan sipariş sayfasına gitmeniz gerekiyorsa şunları yapabilirsiniz:
this.router.navigate(['orders'], { queryParams: { id: '1234' } });