我已经开始研究Angular2,并基本完成了3个嵌套组件的工作.但是我无法解决如何向文档添加一个按键处理程序.
如果没有,我如何听文本上的按键并对其做出反应?
要清楚,我需要对文档本身做出回应,而不是输入.
在Angular 1中,我将创建一个指令并使用$document;这样的:
$document.on("keydown",function(event) { // if keycode... event.stopPropagation(); event.preventDefault(); scope.$apply(function() { // update scope... });
但是我还没有找到一个Angular2解决方案.
你可以这样做:
@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,没有尝试自己:)