2016-08-26 15 views
9

में मार्ग पैरामीटर कैसे प्राप्त करें I [email protected] का उपयोग करके मैंने अपने कोणीय 2 प्रोजेक्ट को RC5 में अपग्रेड कर दिया है।कोणीय 2 आरसी 5

मैं नीचे के रूप में मार्ग प्रदान करते हैं:

const appRoutes: Routes = [ 
    { path: 'project-manager', component: ProjectManagerComponent }, 
    { path: 'designer/:id', component:DesignerComponent } , 
    {path: '',redirectTo: '/project-manager',pathMatch: 'full'} 
]; 

और मैं के रूप में routerLink का उपयोग कर डिजाइनर घटक के लिए पुनः निर्देशित कर रहा हूँ:

<a [routerLink]="['/designer',page._id]"><i class="fa fa-eye fa-fw"></i></a> 

अब यह सफलतापूर्वक रीडायरेक्ट किया जा रहा है और मैं परम मूल्य को देखने के लिए कर रहा हूँ ब्राउज़र के पता बार में।

अब मैं जानना चाहता हूं, मैं एंजुलर 2 आरसी 5 में डिज़ाइनर कॉम्पोनेंट में इस पैरामीटर को कैसे एक्सेस कर सकता हूं।

उत्तर

13

मेरा मानना ​​है कि आप रूटर से ActivatedRoute उपयोग करने के लिए हेरफेर करने के लिए की जरूरत है अपने पैरामीटर।

import { ActivatedRoute } from '@angular/router'; 

... 

constructor(private route: ActivatedRoute, ...) { 
} 

value: any; // -> wanted parameter (use your object type) 

ngOnInit() { 
    // get URL parameters 
    this.route.params.subscribe(params => { 
     this.value = params['id']; // --> Name must match wanted parameter 
    }); 
} 

@angular/core से OnInit आयात करने के लिए यदि आप इसे साथ ही जरूरत है मत भूलना।


संपादित:

  • सफाई सदस्यता से बचने के लिए, क्योंकि NG2 रूटर अपने आप ही अपना सदस्यता प्रबंधन करता है।
  • एओटी संकलन को तोड़ने से बचने के लिए HTML में उपयोग किए जाने वाले निजी चर का उपयोग करने से बचें।
  • ROUTER_DIRECTIVES साफ़ किया गया क्योंकि यह बहिष्कृत है।
+2

रंग मुझे उलझन में डाल दिया। वर्तमान सक्रिय यूआरएल में निश्चित मूल्य क्या है, इसकी सदस्यता लेने की मुझे आवश्यकता क्यों है? ऐसा नहीं है कि यह बदलने जा रहा है। मैं आश्चर्यचकित हूं कि इस तरह की चीज़ को संभालने के लिए @ इनपुट जैसी कुछ नहीं है। –

+1

अपडेट: रुचि रखने वालों के लिए: 'ऑनडेस्ट्राय' ईवेंट में देखने योग्य और सदस्यता समाप्त करने से सदस्यता प्राप्त करने की आवश्यकता नहीं है। मार्ग इसे अपने आप प्रबंधित करता है। आप वास्तव में 'this.sub' काट सकते हैं। –

+0

अद्यतित होने का उत्तर दें! –

4

से पहले आयात ActivatedRoute आयात करें।

import { ActivatedRoute } from '@angular/router'; 

पहुँच यह नीचे के रूप में निर्माता:

constructor(private route: ActivatedRoute){    
} 

नीचे के रूप में ngOnInit अंदर परिवर्तन पैरामीटर की सदस्यता:

ngOnInit() { 
    this.route.params.subscribe(params => { 
    if (params['id']) { 
    } 
    }); 
} 
संबंधित मुद्दे