私は、ホストイベントリスナーを使用してキーボードイベントにサブスクライブするディレクティブを作成しました。エスケープキーを押すと、このような出力イベントが発生します。アンカー2ホストイベントリスナーバブリング
@HostListener('document:keyup', ['$event'])
handleKeyboardEvent(kbdEvent: KeyboardEvent) {
if (kbdEvent.keyCode === 27) {
this.CloseEvent.emit();
}
}
私はこの要素が子要素になっています。エスケープキーが押されると、私は新しく加入した要素の出力イベントだけを発生させたい。問題は、階層的な順序に基づいてイベントが発生するエスケープ・キーをクリックしたときです。私はここでデモを行った。再現するhttps://plnkr.co/edit/FfnHAtxl2zcHsu0JilKt
ステップ:
- を
- 複数の子要素を追加]をクリックしますエスケープそれ
- 最後に追加された子要素イベントでエスケープキーをクリックすると、イベントが発生する必要があります
この '' document:keyup''ディレクティブのすべてのインスタンスは、keyupのグローバルイベントリスナーを追加するので、キーをどこに置いても、ディレクティブのすべてのインスタンスで放出されます。ここでコンソールを参照してくださいhttps://plnkr.co/edit/9paiFapxVf2yaB6uPAnc?p=preview – Toxicable
あなたは正しい方法です。最近追加されたサブスクライブされたインスタンスを最初に起動し、他のインスタンスが停止するのを避けるようにイベントの伝播を停止する方法はありますか発射? –