typescript কীভাবে আমি পুরো পৃষ্ঠায় কীপ্রেস ইভেন্টটি শুনতে পারি?



angular keypress (3)

আমি আমার পুরো পৃষ্ঠায় একটি ক্রিয়াকলাপ বাঁধার একটি উপায় খুঁজছি (যখন কোনও ব্যবহারকারী কোনও কী চাপায়, আমি এটি চাইছি যে এটি আমার উপাদানগুলিতে কোনও ফাংশন ট্রিগার করবে)

এটি একটি ng-keypress কিপ্রেস সহ AngularJS এ সহজ ছিল তবে এটি (keypress)="handleInput($event)" দিয়ে কাজ করে না।

আমি পুরো পৃষ্ঠায় একটি ডিভ র‍্যাপার দিয়ে চেষ্টা করেছি তবে এটি কাজ করে বলে মনে হচ্ছে না। এটি কেবল তখনই কাজ করে যখন এতে ফোকাস থাকে।

<div (keypress)="handleInput($event)" tabindex="1">

https://src-bin.com


Answer #1

2019 ডাব্লু কৌনিক 8 এ কেবল এটি যুক্ত করতে

কিপ্রেসের পরিবর্তে আমাকে কীডাউন ব্যবহার করতে হয়েছিল

@HostListener('document:keypress', ['$event'])

থেকে

@HostListener('document:keydown', ['$event'])

Answer #2

আপনি যদি কোনও নির্দিষ্ট কীবোর্ড বোতাম টিপে কোনও অনুষ্ঠান সম্পাদন করতে চান তবে সেক্ষেত্রে আপনি @ হোস্টলিস্টনার ব্যবহার করতে পারেন। এর জন্য আপনাকে আপনার উপাদান ts ফাইলে হোস্টলিস্টনার আমদানি করতে হবে।

'@ কৌণিক / কোর' থেকে {হোস্টলিস্টনার import আমদানি করুন;
তারপরে নীচের ফাংশনটি আপনার উপাদান ts ফাইলের যে কোনও জায়গায় ব্যবহার করুন।

@HostListener('document:keyup', ['$event'])
  handleDeleteKeyboardEvent(event: KeyboardEvent) {
    if(event.key === 'Delete')
    {
      // remove something...
    }
  }

Answer #3

ইয়ুরজুইয়ের উত্তরটি আমার পক্ষে কার্যকর হয়নি, এটি কোনও আলাদা আরসি সংস্করণ হতে পারে, বা এটি আমার পক্ষে ভুল হতে পারে। যেভাবেই হোক, আমি এখানে Angular2 RC4 (যা এখন বেশ পুরানো) এর সাথে আমার উপাদানটি দিয়ে কীভাবে করেছি।

@Component({
    ...
    host: {
        '(document:keydown)': 'handleKeyboardEvents($event)'
    }
})
export class MyComponent {
    ...
    handleKeyboardEvents(event: KeyboardEvent) {
        this.key = event.which || event.keyCode;
    }
}




key-bindings