zoukankan      html  css  js  c++  java
  • [Angular] Angular Global Keyboard Handling With EventManager

    If we want to add global event handler, we can use 'EventManager' from '@angular/platform-broswer'.

    Now we have a modal component, we want to click 'Esc' key to close the modal.

      <au-modal
        class="auth-modal"
        *auModalOpenOnClick="[loginButton, signUpButton]"
        [closeOnClickOutside]="true"
        [closeOnEsc]="true"
        [body]="newModelBody">
        <!-- Modal body -->
      </au-modal>

    We set two input variables: 'closeOnEsc' for keyboard event. And 'closeOnClickOutside' to click event.

    import {Component, Input, OnInit, TemplateRef} from '@angular/core';
    import {AuModalService} from './au-modal.service';
    import {EventManager} from '@angular/platform-browser';
    
    @Component({
      selector: 'au-modal',
      templateUrl: './au-modal.component.html',
      styleUrls: ['./au-modal.component.scss']
    })
    export class AuModalComponent implements OnInit {
    
      @Input() body: TemplateRef<any>;
      @Input() closeOnClickOutside = true;
      @Input() closeOnEsc = true;
    
      constructor(private auModelService: AuModalService,
                  private eventManage: EventManager) {
      }
    
      ngOnInit() {
        this.eventManage.addGlobalEventListener('window', 'keyup.esc', () => {
          if (this.closeOnEsc) {
            this.closeModal();
          }
        })
      }
    
      onClick() {
        if (this.closeOnClickOutside) {
          this.closeModal();
        }
      }
    
      closeModal() {
        this.auModelService.close();
      }
    
      cancelCloseModal(evt: KeyboardEvent) {
        evt.preventDefault();
        evt.stopPropagation();
      }
    
    }
  • 相关阅读:
    模版继承
    用一个指向int的指针来存储一个对象的地址。
    mysql 增 删 改 查
    虚函数背后的秘密2
    二叉树的应用—最优二叉树(哈夫曼树)
    虚函数
    经典贪心,哈夫曼编码。
    以下代码有什么问题?
    前缀运算和后缀运算
    虚函数背后的秘密
  • 原文地址:https://www.cnblogs.com/Answer1215/p/7106848.html
Copyright © 2011-2022 走看看