EventEmitter теряет Observer: Angular 6 - PullRequest
0 голосов
/ 22 октября 2018

У меня есть простой компонент для рендеринга вложенного дерева.

<div *ngFor="let node of nodes.childrens"> 
    <span (mouseover)="onHover(node.id, $event)" (mouseout)="onOut(node.id, $event)">{{node.type}}</span>
    <nodestree [nodes]="node"></nodestree>
</div>

На компоненте у меня есть два EventEmitters

@Input() nodes;
@Output() hover : EventEmitter<string> = new EventEmitter<string>();
@Output() out : EventEmitter<string> = new EventEmitter<string>();

И эти два метода

 onHover(elementId, event){
     this.hover.emit(elementId);
 }

 onOut(elementId){
     this.out.emit(elementId);
 }

HTML

<div *ngFor="let node of nodes.childrens"> 
    <span (mouseover)="onHover(node.id, $event)" (mouseout)="onOut(node.id, $event)">{{node.type}}</span>
    <nodestree [nodes]="node"></nodestree>
</div>

Все работает нормально, кроме случаев, когда мышь летит над вложенным узлом.

Я зарегистрировал источник событий, и между ними есть небольшая разница, когда мышь пролетает над корневыми узлами и вложенными узлами.

Корневые узлы:

observers: [Subscriber]

Вложенные узлы:

observers: []

Таким образом, событие никогда не отправляется.console.logs работают внутри функции, но событие никогда не отправляется родительскому компоненту.Что я делаю неправильно?Или вы можете узнать мне что-то новое?

Спасибо всем!

...