首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止使用空格键触发<mat-expansion panel>?

如何停止使用空格键触发<mat-expansion panel>?
EN

Stack Overflow用户
提问于 2018-02-24 07:46:44
回答 3查看 4.4K关注 0票数 4

我在面板描述中有一个带有文本区域框的手风琴。当我连接到文本区并按下空格键时,它会打开/关闭面板。我怎么才能阻止它呢?

代码语言:javascript
复制
<mat-accordion>
  <mat-expansion-panel>
    <mat-expansion-panel-header>
      Header
    </mat-expansion-panel-header>
    <mat-panel-description>
      <mat-form-field>
        <textarea matInput></textarea>
      </mat-form-field>
    </mat-panel-description>
  </mat-expansion-panel>
</mat-accordion>
EN

回答 3

Stack Overflow用户

发布于 2019-09-20 15:18:46

我发现了一个更干净的解决方案。仅添加到面板-header this for override keydown事件空间:

代码语言:javascript
复制
(keydown.Space)="$event.stopImmediatePropagation();"
代码语言:javascript
复制
<mat-expansion-panel-header (keydown.Space)="$event.stopImmediatePropagation();">

参考:https://github.com/angular/components/blob/master/src/material/expansion/expansion-panel-header.ts

票数 11
EN

Stack Overflow用户

发布于 2018-05-04 16:07:42

你可以在你的html中做这样的事情,

代码语言:javascript
复制
<mat-accordion>
 <mat-expansion-panel>
  <div (keydown)="handleSpacebar($event)">
   /*this div should contain elements inside of the mat-expansion-panel
   where you would like to stop the propagation of the space key press*/             
  </div>
 </mat-expansion-panel>
</mat-accordion>

.js中的函数是这样的,

代码语言:javascript
复制
handleSpacebar(ev) {
 if (ev.keyCode === 32) {
   ev.stopPropagation();
 }
}

现在,您可以在div内的任何元素中使用空格,而不会导致扩展面板关闭。希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2019-08-06 01:54:42

你也可以使用这个简短的版本:

代码语言:javascript
复制
<div (keydown.Space)="$event.stopPropagation()">
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48957779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档