2016-08-24 5 views
21

कैसे एक घटक स्ट्रिंग संयोजन के बिना Router का उपयोग करने और /questions/123/ निर्दिष्ट करने के भीतर /questions/123/step2 को /questions/123/step1 से रिश्तेदार नेविगेट करने के लिए?नेविगेट रिश्तेदार

मैंने नीचे अपना उत्तर जोड़ा है। बेहतर जवाब देने के लिए स्वतंत्र महसूस करें। ;-) मुझे लगता है कि बेहतर दृष्टिकोण हैं।

उत्तर

30

कुछ और अधिक शोध करने के बाद मैं मेरे लिए काम नहीं किया

this.router.createUrlTree(['../step2'], {relativeTo: this.activatedRoute}); 

और

this.router.navigate(['../step2'], {relativeTo: this.activatedRoute}); 

पहले दृष्टिकोण (Router.createUrlTree API) के साथ भर में आया था, अर्थात कुछ भी नहीं हुआ। दूसरा दृष्टिकोण (Router.navigate API) काम करता है।

हालांकि, दूसरा दृष्टिकोण NavigationExtras (दूसरा तर्क) का उपयोग करता है जो @experimental के साथ प्रलेखित है। उम्मीद है कि अगली रिलीज के साथ फिर से बड़े बदलाव नहीं होंगे ... और NavigationExtras स्थिर रहेगा।

कोई अन्य सुझाव/दृष्टिकोण, कृपया ऊपर दिए गए मेरे प्रश्न का उत्तर देने में संकोच न करें।

अद्यतन 2016-10-12

रूप में अच्छी तरह एक और stackoverflow सवाल ही नहीं है:

अद्यतन 2016-10-24

प्रलेखन :

+0

मेरे परीक्षण के अनुसार यह 'this.router.navigate (['step2'], {relativeTo: this.activatedRoute} होना चाहिए; ~ बिना ../पथ से पहले। –

+1

@XinMeng ../ इस उदाहरण के लिए विशिष्ट है, यहां लक्ष्य एक स्तर तक जाने की कोशिश कर रहा है, और फिर चरण 2 जोड़ें।इसलिए उदाहरण के लिए '/ parent/child''/parent/step2 'बन जाएगा जबकि आपके उदाहरण में यह '/ parent/child/step2' बन जाएगा। आपका उदाहरण वैध कोड भी है, लेकिन विशिष्ट प्रश्न के लिए उत्तर सही है। –

2

आप नीचे दिए गए का उपयोग कर सकते,

धारणा है questions अपनी प्राथमिक router-outlet

this.router.navigate([ 
     '/', 
     { 
     outlets: { 
      primary: [ 
       // below may be replaced with different variables 
       'questions', 
       '123', 
       'step2' 
      ] 
     } 
     } 
    ]) 

आशा इस मदद करता है में लोड किया जाता !!

+0

धन्यवाद। लेकिन मैं पूरा मार्ग पथ लिखने से बचना चाहता हूं। –

2

पहले, निर्माता पर रूटर & ActivatedRoute इंजेक्षन

constructor(private route:ActivatedRoute,private router:Router) { } 

तो घटना क्लिक करने के लिए उपयोग करें:

onEditClick(){ 
     this.router.navigate(['edit'],{relativeTo:this.route}); 

तुम मेरे परिदृश्य page.In की उम्मीद करने के लिए नेविगेट, मैं जाने के लिए नुस्खा/1 चाहता था नुस्खा को संपादित करने के लिए। http://localhost:4200/recipes/1/edit

संबंधित मुद्दे