के लिए @ इनपुट पर @Output का उपयोग क्यों करें, मैं कुछ वर्षों से कोणीय 1 के साथ काम करने के बाद, कोणीय 2 सीख रहा हूं। मैं Angular2 में कुछ महत्वपूर्ण अवधारणाओं को सीखने के मुख्य लक्ष्य के साथ क्रेडिट कार्ड फॉर्म घटक बना रहा हूं। घटक को सभी स्वरूपण को संभालना चाहिए, और कॉलबैक के माध्यम से एक स्ट्रिप टोकन वापस करना चाहिए। मुझे एहसास हुआ कि मैं कॉलबैक को दो तरीकों से संभाल सकता हूं।कोणीय 2 कॉलबैक
एक @Output पैरामीटर
का उपयोग करते हुए मेरी घटक में मैं एक उत्पादन चर को परिभाषित करने और की तरह उपयोग इस उदाहरण में:
export class CreditCardForm{
....
@Output() callback = new EventEmitter();
....
doCallback(){
this.callback.emit({data: 123});
}
}
// Parent view
<credit-card-form (callback)="creditCardCallback($event)"></credit-card-form>
हालांकि एक @Input चर का उपयोग करना , मैं इनपुट इनपुट में कॉलबैक विधि (creditCardCallback
, मूल टेम्पलेट में उपयोग किया गया) पास कर सकता हूं, जैसे:
export class CreditCardForm{
....
@Input() callback;
....
doCallback(){
this.callback({data: 123});
}
}
// Parent view
<credit-card-form [callback]="creditCardCallback"></credit-card-form>
सवाल
मैं क्यों @Input
से अधिक @Output
का उपयोग करना चाहते हैं? इसके बजाय @Output
चर का उपयोग करके मैं क्या हासिल करूं? जहां तक मैं देख सकता हूं, यह EventEmitter
कक्षा का उपयोग करके एक ओवरहेड जोड़ता है।
एक महान उत्तर के लिए बहुत बहुत धन्यवाद! यह मुझे कॉलबैक के लिए '@ आउटपुट' का उपयोग करने के लिए आश्वस्त करता है। आपके उत्तर ने मुझे यह भी सिखाया कि "बॉक्स वाक्य वाक्य में केले" जैसे वाक्यांश हैं, जो गूगलिंग के दौरान कुछ मजेदार चित्रों की ओर जाता है :) –
मुझे यह भी लगता है कि '@ आउटपुट' के साथ आप * संदेश युग्मन * के रूप में उपयोग कर रहे हैं '@ इनपुट 'के साथ * बाहरी युग्मन * का विरोध किया। तो अगर किसी मामले में बच्चे में '@ इनपुट' पैरामीटर अनिर्धारित है (कोई अभिभावक नहीं है?), तो आपको किसी भी 'this.callback &&.c.cbackback.call (...) 'या इसके बारे में चिंता करने की ज़रूरत नहीं है 'noOp' विधियों। लेकिन मैं ** ** ** ईवेंट-उत्सर्जन के लिए कभी भी '@ आउटपुट' का उपयोग कर देख सकता हूं - * लेकिन मुझे लगता है कि ऐप-स्केल के विपरीत घटक पैमाने पर आपके ईवेंट-प्रकार को परिभाषित करने के लिए इसका खराब डिज़ाइन; यह आपके ऐप और उसके इंजीनियरों * के लिए एंट्रॉपी बनाएगा। – Cody
धन्यवाद हैरी! बस आश्चर्यचकित कारण मैं इसके लिए exaclty देख रहा था। मेरी छोटी सी समस्या यह है कि यहां से अपनी नीची शैली में कैसे स्वैप करें? <आइटम (डेटा) = "हैंडल अपडेटेड ($ ईवेंट)" [डेटा] = "नाम"> – gtamborero