2016-02-05 8 views
6

मैं कोणीय 2 के लिए नया हूं इसलिए कृपया मेरी समस्या का वर्णन करने में गलत शब्दों का उपयोग करने पर क्षमा करें।क्या मैं angular2 घटक से EventEmitter का उपयोग करके चर पास कर सकता हूं?

मेरे पास एक साधारण घटक है जो उपयोगकर्ता को एक विकल्प चुनने देता है। अब मैं इस विकल्प को मूल घटक में प्रेषित करना चाहता हूं। मैं यह कर रहा हूं:

// import the necessary angular2 resources: 
import {Component, Output, EventEmitter} from 'angular2/core'; 
... 
// create the emitter in my component class: 
export class MyClassThatLetsUserSelectSomeContentId{ 
    @Output() selectEvent: EventEmitter<any> = new EventEmitter(); 
    public selectedId: string; 
    // this does get called, showing the correct id in the console 
    onSelect(selectedItem: MyCustomItem){ 
     this.selectedId = selectedItem.id; 
     console.log("selectedId:" + this.selectedId); 
     this.selectEvent.emit(this.selectedId); 
    } 
} 

और मुख्य घटक में मैं इस तरह टेम्प्लेट में शामिल हैं:

<my-selector-component (selectEvent)="onItemSelected(selectedItemId)"></my-selector-component> 

और समारोह कैलेस प्राप्त करता है, लेकिन चर अपरिभाषित है:

onItemSelected(selectedItemId: string){ 
    console.log("onItemSelected(" + selectedItemId + ")"); 
} 

कंसोल आउटपुट है:

लॉग: onItemSelected (अपरिभाषित)

तो मुझे क्या याद आ रही है? ईवेंट भेजा जाता है और फ़ंक्शन को कॉल किया जाता है लेकिन पैरामीटर खो जाता है।

शायद चयनित आईडी के लिए बाध्यकारी का कोई अन्य रूप बेहतर ढंग से बेहतर होगा। मैं तब तक किसी भी प्रकार के समाधान के लिए खुला हूं जब तक कि मूल घटक दृश्य घटक से नए चयन पर प्रतिक्रिया दे सके।

<my-selector-component (selectEvent)="onItemSelected($event)"> 
</my-selector-component> 

मूल्य आप EventEmitter की emit विधि के पैरामीटर के रूप में प्रदान करते हैं यह से मेल खाती है:

उत्तर

11

आप $event चर का उपयोग करने के लिए मूल्य आप भेजने जब घटना को ट्रिगर प्राप्त करने की आवश्यकता।

+0

धन्यवाद, यह तुरंत काम किया! क्या मैं इसे दस्तावेज़ों में देखने के लिए बहुत अंधा था या क्या यह वाकई छिपा हुआ है? –

+0

आपका स्वागत है! अब यह घटनाओं के लिए इतना स्पष्ट है कि कस्टम घटक ट्रिगर कर सकते हैं ... कोई चिंता नहीं ;-) –

+2

क्या श्रोता के लिए यह एकाधिक पैरामीटर संभव है? उदाहरण के लिए, 'onItem चयनित ($ घटना, अधिक, अधिक) '। मैं एक सरणी के रूप में '$ event' बना सकता हूं, लेकिन केवल उत्सुक हूं। – allenhwkim

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

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