Angular,恢复事件传播

时间:2017-10-17 14:17:04

标签: javascript angular typescript events stoppropagation

当用户单击按钮时,会有一个指令捕获此事件并将其停止。然后打开一个模态,要求用户确认。如果用户确认,那么我需要恢复以前的活动。

如何恢复已停止的活动?

示例:

 markAsSeen($event) : void {

    // pause whatever user wanted to click
    $event.stopPropagation(); 

    // open modal and ask user for confirmation
    let modalInstance = this.modalService.openConfirmationModal();

    // on modal close, if positive event continue whatever user clicked
    modalInstance.onClose((response) => {
       if(response) {
          // this line should resume $event
          $event.originalEvent(); // how to achieve this?
       } 
    }) 
}

1 个答案:

答案 0 :(得分:1)

对我而言,这是两个不同的事件,第一个是openModal,但看起来没用(你为什么不打开一个模态?),第二个确认用户点击确认时。

对我来说这是最简单的方法:如果你需要第一个事件发射器,那么只打开模态,第二个开始确认过程,如果是肯定的。另一种方法是在确认-1中添加“状态”变量,表示未启动(=模态关闭),1表示肯定确认,0正在进行中。

最后为避免用户点击,请使用

之类的内容
onClick(event) {
if (!this.element.nativeElement.contains(event.target)) {
      closeModal(); // or not
    }
}

其中event.target是单击的目标

编辑:onClick必须添加到@Component

@Component({selector..., host: {
    '(document:click)': 'onClick($event)',
  }});