如何禁用 Angular Material 中的内置按键操作?

How to disable built-in keypress actions in Angular Material?

我在使用 Angular Material 的 sidenav 本地热键 'esc' 操作时遇到问题。当按下 esc 时,框架将切换 $mdSidenav('left/right').toggle()。这是不可取的,因为我希望我的切换操作也能切换其他操作。

我试过使用 "pure" javascript 来阻止代码的操作:

document.onkeydown = function(e) {
    if (e.which == 27) return false;
};

document.onkeyup = function(e) {
    if (e.which == 27) return false;
};

失败了。我累了:

document.onkeydown = function(e) {
  if (e.which == 27) {
    break;
    return false;
  }
};

document.onkeyup = function(e) {
  if (e.which == 27) {
    break;
    return false;
  }
};

它也失败了,因为它不是一个合法的 break 语句。

您可以通过删除 angular-material.js 中的第 93 行来禁用 esc 操作。

按照这个方法:https://github.com/angular/material/issues/974#issuecomment-67784785

您可以在 $scope.isOpen 上观看,当它关闭时您可以检查(使用另一个范围标志)您的 "Close" 按钮是否被按下。如果没有,你可以重新打开sidenav,这样就不会被用户感知了。

希望对您有所帮助。