键盘事件绑定在contenteditable中的组件

时间:2017-02-28 03:55:01

标签: angular contenteditable keyboard-events

我尝试在div [contenteditable = true]内的组件上侦听键盘事件。为什么不工作?

plunk http://plnkr.co/edit/Tjmihqc1r5UrS3XJ3QQ0?p=preview

模板:

<div contenteditable="true"> <h2 (keydown)="log($event)" (keyup)="log($event)" (keypress)="log($event)" (click)="log($event)">Hello {{name}}</h2> </div>

点击 - 工作

keydown,keyup,keypress - not work

更新: 我发现问题不适用于角度2 其满足的相关Keypress event on nested content editable (jQuery)

2 个答案:

答案 0 :(得分:0)

试试这个:

@Component({
  selector: 'my-app',
  template: `
  <div contenteditable="true" (keyup)="onKey($event)"> 
    <h2>Hello {{values}}</h2>
  </div>
  `,
})

在component.ts

export class App {
  name:string;
  log = [];
  values = '';
  constructor() {
    this.name = 'Angular2'
  }

  onKey(event: any) { 
    console.log(event);
    this.values += event.key + ' | ';
  }
}

根据Angular2文档,您需要使用Keyup而不是Keydown Get User input from $event

Plunkr Example

答案 1 :(得分:0)

我更新了我的问题。简而言之 - 角2工作如预期的那样。

与contenteditable本身相关的问题。

你无法在满足的儿童元素上听键盘事件。

Keypress event on nested content editable (jQuery)

中注意到的可行的解决方法