Angular 2+拦截Command+S的优雅方式

2023-12-28

尝试实现 Command+S 的快捷键组合来保存表单。

我读过这个 -https://angular.io/guide/user-input https://angular.io/guide/user-input,但它没有提及任何有关元或命令的信息。

尝试用以下内容包围表单:

<div
  (keyup.command.s)="save()"
  (keyup.command.u)="save()"
  (keyup.control.u)="save()"
  (keyup.control.s)="save()"
  (keyup.meta.u)="save()"
>

其中,只有control.u and control.s worked.

凭借 Angular 2+ 的所有强大功能和跨浏览器功能,我希望能够以一种优雅的方式处理这个问题,使用(keyup...).

当然,许多 Angular 开发人员都使用 Mac :)。

我也读过如何通过 JavaScript 捕获 Mac 的命令键? https://stackoverflow.com/questions/3902635/how-does-one-capture-a-macs-command-key-via-javascript and http://unixpapa.com/js/key.html http://unixpapa.com/js/key.html但仍然希望 Angular 优雅的解决方案,而不是与浏览器特定的东西作斗争......


全局监听器,未弃用的答案:

@HostListener('window:keydown', ['$event'])
onKeyDown(event: KeyboardEvent) {
    if ((event.metaKey || event.ctrlKey) && event.key === 's') {
        this.save();
        event.preventDefault();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2+拦截Command+S的优雅方式 的相关文章

随机推荐

  • 如何动态调整 DIV 元素的宽度以适合其文本内容?

    假设我有这个 HTML 代码片段 div div Text Content Te div div Another Text Content div div 原始 HTML 输出 http img26 imageshack us img26
  • PHP 中中断和继续的区别?

    有什么区别break http php net manual control structures break php and continue http php net manual control structures continue
  • 如何将输入文本字段中输入的网址附加到锚点,然后在单击锚点时跟随它?

    我想要一个文本字段 人们可以在其中输入值 然后我想让 href 打开一个 url 并将文本字段附加到末尾 因此 如果文本字段显示 大象 那么当他们单击链接时 将打开一个页面 网址为 example com elephant 我认为 java
  • 在哪里放置我的守护程序应用程序的调试日志文件?

    我使用C语言和Linux作为我的编程平台 我正在学习如何创建守护程序 并且我想创建一个日志文件 以便在守护程序中写入调试消息 我的问题是我应该将日志文件放在系统中的哪里 我应该把它放在var文件夹中吗 请指教 非常感谢 你应该使用syslo
  • 如何将 .sh 文件与 Cygwin 关联?

    我想通过双击 Windows 中的 sh 文件来在 Cygwin 中运行长 rsync 命令 它必须从文件所在的目录 例如 cygdrive c scripts 开始 以便相对路径起作用 有人得到这个工作吗 注 我刚刚发现here http
  • Chromedriver 不会打开新会话,它会在现有会话中打开新选项卡

    我的代码在某些 PC 上运行正常 但有一个它不会打开新的私人会话 在这种特殊情况下 它会在已打开的同一窗口中加载当前的 chrome 配置文件 我尝试查看一些 stackoverflow 问题 看看其他人是否也遇到过这种情况 但没有成功 尝
  • 在函数声明和定义中使用 noexcept 说明符?

    考虑以下函数 Declaration in the h file class MyClass template
  • 获取 jQuery 集合中最宽的元素

    假设我有一堆 span 具有不同文本内容的元素 我怎样才能获得最广泛的 span jQuery 没问题 我只关心识别跨度 而不关心宽度本身的值 类似的问题是here https stackoverflow com questions 724
  • Spring Mobile - 拦截器未应用?设备为空

    我正在尝试 Spring Mobile 但我似乎无法让基本示例正常工作 我有一种感觉 我错过了一些愚蠢简单的东西 但我不知道它是什么 这是我所拥有的 在 web xml 中
  • Jenkins 电子邮件通知设置

    我正在尝试为我的詹金斯服务器设置构建失败的电子邮件通知 我尝试过的事情 1 使用我公司的 smtp 邮件服务器进行身份验证 不起作用 连接被拒绝 2 设置我自己的 James 邮件服务器 SMTP 服务器 本地主机 身份验证 管理员 管理员
  • Electron 在开发中运行时显示空白屏幕,但在生产中运行

    当我在 CLI 中运行 yarn run electro dev 时 打开http 本地主机 3000 http localhost 3000在浏览器中显示主页 但电子应用程序显示空白 与其他人在生产中遇到问题但在开发中工作的类似问题不同
  • jQuery.Deferred().then,多参数如何解析

    所以我的 API 期望当特定的延迟得到解决时 它会获得 2 个参数 fn done function arg1 arg2 console log arg1 arg2 fail function err console error err 现
  • SQLite 如何查找最常见出现的值

    假设我有一个带有属性 X 的表 A 如何找到出现次数最多的 X 可以有多个具有相同的最高出现次数 IE 表A X a b c c b 我想回来 X b c 我不能在 Sqlite 中使用关键字 ALL 所以我不知所措 我想获取每个 X 的计
  • Laravel-mix 没有构建通知

    我正在使用 Vue js 和 Laravel Mix 当我保存项目时 我没有收到这样的任何通知 我在跑npm run watch 编译时 我的控制台不显示任何错误 警告 我已经检查过webpack mix js for mix disabl
  • 如何在 Chrome 扩展的内容脚本中导入 ES6 模块

    In 铬61 添加了对 JavaScript 中模块的支持 现在我运行的是 Chrome 63 我正在尝试使用import exportChrome 扩展内容脚本中的语法以使用模块 In manifest json content scri
  • 无限滚动 jquery 插件

    我正在尝试在我正在使用 Coldfusion 开发的网站上设置无限滚动 我对 javascript 和 jquery 很陌生 所以我在解决所有这些问题时遇到了一些问题 我的网站是否需要分页才能使用无限滚动插件 或者有没有办法不需要它 为此
  • Boost编译点云库时出现的问题

    我正在尝试在 OSX 10 6 8 上从源代码编译点云库 并且在使用 Boost 库时不断遇到相同的错误 make Linking CXX shared library lib libpcl common dylib Undefined s
  • 找不到 autoconf。请检查 CentOS 中的 autoconf 安装 Xampp

    在 CentOS 中的 XAMPP 中使用 php 配置 memcached 时出现另一个错误 opt lampp bin phpize Configuring for PHP Api Version 20131106 Zend Modul
  • 如何使用 Express 或 Body-Parser 拒绝无效的 JSON 正文

    我正在创建一个仅接受 json 主体类型并使用主体解析器和express 的应用程序 不断出现的问题是 如果我发送无效的 json 正文 那么我的程序将向用户和控制台抛出一个愚蠢的错误 我如何防止此控制台错误并拒绝具有不正确 JSON 正文
  • Angular 2+拦截Command+S的优雅方式

    尝试实现 Command S 的快捷键组合来保存表单 我读过这个 https angular io guide user input https angular io guide user input 但它没有提及任何有关元或命令的信息 尝