对话框事件关闭后的事件发射器订阅父对象

时间:2019-01-02 13:16:32

标签: dialog angular5 material eventemitter zone

我想在关闭材质对话框后发出一个事件,但是不起作用(也许因为角度代码不在区域内?)。

如果我尝试执行此操作,它将正常工作(该事件已正确附加在html父级中):

onClick(){
   this.actionEmitter.emit(result);
}

但是,如果我将这段代码放在afterClosed事件中:

    dialogRef.afterClosed().subscribe(result => {
        this.actionEmitter.emit(result);
    });

它不起作用。没有显示错误,但事件在那里停止。我该如何解决?

1 个答案:

答案 0 :(得分:0)

最后,我找出了问题所在。这不是区域外的问题。 组件的层次结构是这样的:

  1. 父母:物品清单
  2. Child:带有 mouseleave和鼠标悬停的项目,显示打开对话框的操作按钮
  3. 对话

发生的事情是,当鼠标进入项目时打开对话框,这次失去了焦点,并且在html中showOperations为false。 actionEmitter不再存在。

 <div  (mouseenter)="showOperations=true" (mouseleave)="showOperations=false">

      <!-- item something -->

      <child-component *ngIf="showOperations" (actionEmitter)="action($event)"></child-component>
 </div>

我已经使用[隐藏]而不是* ngIf进行了解析:

 <child-component [hidden]="!showOperations" (actionEmitter)="action($event)"></child-component>