2016-09-16 2 views
8

मैं अपने .routing.ts में इस फ़ाइलकोणीय 2 राउटर 2.0.0 विभिन्न पैरामीटर के साथ लोड होने पर समान यूआरएल घटकों को फिर से लोड नहीं कर रहा है?

export const routing = RouterModule.forChild([ 
{ 
    path: 'page/:id', 
    component: PageComponent 
}]); 

मेरे PageComponent फ़ाइल आईडी पैरामीटर की जांच करता है और उसके अनुसार डेटा लोड है। राउटर के पिछले संस्करणों में, यदि मैं/पेज/4 से/पेज/25 तक गया, तो पृष्ठ "पुनः लोड" होगा और घटक अपडेट होंगे।

अब जब मैं/पेज/एक्स पर नेविगेट करने का प्रयास करता हूं जहां एक्स आईडी है, तो यह केवल पहली बार लोड होता है, फिर यूआरएल बदलता है, लेकिन घटक फिर से "पुनः लोड नहीं होते"।

क्या मेरे घटकों को पुनः लोड करने के लिए मजबूर करने के लिए कुछ ऐसा करने की आवश्यकता है, और ngOnInit ईवेंट को कॉल करें?

उत्तर

15

अद्यतन 2

यह उत्तर केवल एक बहुत पहले बंद रूटर संस्करण के लिए है।

वर्तमान राउटर में इसे कैसे करें https://angular.io/api/router/RouteReuseStrategy देखें।

अद्यतन 1

वह अब भी निश्चित होती है (कोणीय 2.3) जो एक कस्टम पुन: उपयोग रणनीति प्रदान करने के लिए अनुमति देता है https://github.com/angular/angular/pull/13124 द्वारा नए रूटर के लिए।

एक उदाहरण के लिए भी https://www.softwarearchitekt.at/post/2016/12/02/sticky-routes-in-angular-2-3-with-routereusestrategy.aspx

मूल

https://github.com/angular/angular/issues/9811

एक ज्ञात मुद्दा है कि देखते हैं। वर्तमान में राउटर पैरामीटर-केवल रूट परिवर्तनों पर घटक को फिर से बनाने का कोई तरीका नहीं है।

उन्होंने अंततः कुछ पुन: उपयोग-रणनीतियों को लागू करने की योजनाओं पर चर्चा की।

आप परिवर्तनों पैरामीटर और अपने कोड वहाँ के बजाय ngOnInit()

+1

धन्यवाद, पूरी तरह से काम करता है पैरामीटर की सदस्यता – Gillardo

+2

मैं कोणीय 4. पर एक ही मुद्दे का सामना करना पड़ रहा वहाँ इस समस्या के लिए किसी भी समाधान है? – pushp

+0

गार्ड के साथ क्या करना है? – MgSam

-1

में इस कोड को काम के दोनों कोणीय 2 और 4 के लिए निष्पादित आप की तरह परम सदस्यता लेनी की सदस्यता ले सकते

नीचे
selected_id:any; 
constructor(private route: ActivatedRoute) { } 
ngOnInit() 
{ 
    this.route.params.subscribe(params => { 
    this.selected_id = params['id']; 
    }); 
} 

मान लीजिए अभी भी आपका पृष्ठ पुनः लोड नहीं किया गया है, ngOnDestroy का उपयोग कर सदस्यता रद्द करें।

ngOnDestroy() 
{ 
this.selected_id.unsubscribe(); 
} 

यह पिछले परम मूल्य

मेरे लिए काम कर तर्क ऊपर

स्पष्ट हो जाएगा। उम्मीद है कि यह आपके लिए मदद करेगा।

[Info] 
var selected_id = this.route.snapshot.paramMap.get('id'); 
//earlier i was used this code to get param value,it works when navigate from 
//different page but not in the same page reload 
संबंधित मुद्दे