Генератор событий из диалога afterClosed подписывается на родителя - PullRequest
0 голосов
/ 02 января 2019

Я хочу выдать событие после закрытия диалогового окна материала, но оно не работает (возможно, из-за того, что угловой код находится вне зоны?).

Если я попробую это сделать, все будет работать нормально (событие правильнов родительском html):

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

Но если я добавлю этот код в событие afterClosed:

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

Это не сработает.Ошибка не отображается, но событие останавливается там.Как я могу это исправить?

1 Ответ

0 голосов
/ 02 января 2019

Наконец-то я разобрался в проблеме.Это не было проблемой вне зоны.Иерархия компонентов такова:

  1. Parent: список элементов
  2. Child: элемент с mouseleave и mouseover для отображения кнопок операций, открывающих диалоги
  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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...