1

我在IE11中遇到了問題@HostListener。 我需要趕上當用戶使用keydown事件的空間,我的代碼非常簡單,它在Chrome和FireFox中工作正常,但在IE中不起作用。angular 2 HostListener - keydown空間事件在IE中不起作用

import {Component, HostListener} from '@angular/core'; 

@Component({ 
    selector: 'home', 
    styleUrls: ['./home.component.css'], 
    templateUrl: './home.component.html' 
}) 
export class HomeComponent { 
    @HostListener('window:keydown.control.space', ['$event']) 
    @HostListener('window:keydown.space', ['$event']) 
    spaceEvent(event: any) { 
     alert('space key!'); 
    } 
} 

在IE開發人員工具中,我看不到任何錯誤或警告,並且我不知道如何解決此問題。 任何建議如何解決這個問題?

+0

哪個IE版本是您使用。舊版本的IE不支持各種事件。這對你來說更是一個限制。 –

+0

看看這裏。 https://stackoverflow.com/questions/9507200/why-keydown-listener-doesnt-work-in-ie –

回答

2

我找到了解決方案。 IE不能與許多各種活動正常工作還需要用@HostListener('window:keydown', ['$event'])再搭上一些鍵代碼

例子:

import {Component, HostListener} from '@angular/core'; 

@Component({ 
    selector: 'home', 
    styleUrls: ['./home.component.css'], 
    templateUrl: './home.component.html' 
}) 
export class HomeComponent { 

    @HostListener('window:keydown', ['$event']) 
    spaceEvent(event: any) { 
     if(event.ctrlKey && event.keyCode == 32) 
      console.log('ctrl + space'); 
     else if(event.keyCode == 32) 
      console.log('space'); 
    } 
} 
+0

路要走...... –