मेरे जैसे किसी के लिए भी इस सवाल का पता लगाना निम्नलिखित उपयोगी हो सकता है।
मुझे इसी तरह की समस्या थी और शुरू में स्थान.आग और स्थान का उपयोग करने की कोशिश की गई थी। यहाँ दिए गए अन्य उत्तरों के अनुसार सुझाव दें। हालाँकि, मुझे तब समस्याएँ हुईं जब मुझे ऐप पर किसी अन्य पेज पर जाना पड़ा क्योंकि नेविगेशन वर्तमान रूट के सापेक्ष था और वर्तमान रूट को location.go या location.replaceState द्वारा अपडेट नहीं किया जा रहा था (राउटर को कुछ भी पता नहीं है URL के बारे में ये क्या करते हैं)
संक्षेप में मुझे एक समाधान की आवश्यकता थी कि मार्ग पैरामीटर बदल जाने पर DIDN'T पृष्ठ / घटक को पुनः लोड न करे लेकिन DID मार्ग को आंतरिक रूप से अद्यतन करता है।
मैं क्वेरी मापदंडों का उपयोग कर समाप्त हुआ। आप इसके बारे में और जानकारी यहाँ पा सकते हैं: https://angular-2-training-book.rangle.io/handout/rout/query_params.html
इसलिए यदि आपको ऑर्डर सेव करने जैसा कुछ करना है और ऑर्डर आईडी प्राप्त करना है तो आप नीचे दिखाए गए पेज की तरह अपना पेज यूआरएल अपडेट कर सकते हैं। एक मानचित्र पर एक केंद्र स्थान और संबंधित डेटा को अपडेट करना समान होगा
// 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' } });