2016-01-26 10 views
13

मैंने कोणीय 2 में देखना शुरू कर दिया है और 3 नेस्टेड componenets काम कर रहे हैं। हालांकि मैं दस्तावेज़ में एक कीप्रेस हैंडलर जोड़ने का तरीका नहीं समझ सकता।

यदि नहीं, तो मैं दस्तावेज़ पर एक कीप्रेस के लिए कैसे सुनूंगा और इसके प्रति प्रतिक्रिया कैसे करूं? स्पष्ट होने के लिए मुझे दस्तावेज़ पर एक केप्रेस का जवाब देना होगा, इनपुट नहीं।

कोणीय 1 में मैं एक निर्देश तैयार करता हूं और $ दस्तावेज़ का उपयोग करता हूं; इस तरह कुछ:

$document.on("keydown", function(event) { 

     // if keycode... 
     event.stopPropagation(); 
     event.preventDefault(); 

     scope.$apply(function() {    
     // update scope...   
     }); 

लेकिन मुझे अभी तक एक कोणीय 2 समाधान नहीं मिला है।

उत्तर

15

आप कुछ इस तरह कर सकते हैं:

@Component({ 
    host: { 
    '(document:keyup)': '_keyup($event)', 
    '(document:keydown)': '_keydown($event)', 
    }, 
}) 
export class Component { 
    private _keydown(event: KeyboardEvent) { 
    let prevent = [13, 27, 37, 38, 39, 40] 
     .find(no => no === event.keyCode); 
    if (prevent) event.preventDefault(); 
    } 
    private _keyup(event: KeyboardEvent) { 
    if (event.keyCode === 27) this.close(); 
    else if (event.keyCode === 13) ...; 
    else if (event.keyCode === 37) ...; 
    else if (event.keyCode === 38) ...; 
    else if (event.keyCode === 39) ...; 
    else if (event.keyCode === 40) ...; 

    // else console.log(event.keyCode); 
    } 
} 

Btw, कोणीय टीम में कुछ रोचक ideas about keyboard events, यकीन नहीं इस समय इस की स्थिति क्या थी। यह भी संभव है it's working, मैंने कोशिश नहीं की :)

+0

मैंने पहले 'दस्तावेज़: कीप' वाक्यविन्यास नहीं देखा है। क्या आपके पास इसके लिए कोई संदर्भ है इसलिए मैं और जान सकता हूं? –

+0

@MarkRajcok यह सुनिश्चित नहीं है कि मुझे पहली बार यह कहां मिला .. मुझे पता है कि मैंने आधिकारिक [डेवलपर मार्गदर्शिका] पर < 'देखा है (https: // angular.io/docs/ts/latest/guide/user-input.html) - ** मुख्य ईवेंट फ़िल्टरिंग ** के लिए देखो ... मैं यह जानने की कोशिश करूंगा कि मुझे 'दस्तावेज़: _event_' वाक्यविन्यास कहां मिला। 'विंडो के साथ काम करता है: उदाहरण के लिए भी क्लिक करें। – Sasxa

+1

@MarkRajcok मैं कुछ समय पहले "बाहर क्लिक करें" की तलाश में था, और मुझे [Angular2 मॉडल] के लिए कोड मिला (https://github.com/shlomiassaf/angular2-modal/blob/master/src/angular2-modal/ घटकों/bootstrapModalContainer.ts)। इसके बाद मैंने [key_events] (https://github.com/angular/angular/blob/master/modules/angular2/src/platform/dom/events/key_events.ts) के लिए स्रोत कोड देखा और कुछ प्रयोगों के साथ मुझे मिला इस वाक्यविन्यास के लिए ... – Sasxa

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