EventEmitter失去观察者:Angular 6

时间:2018-10-22 15:11:33

标签: typescript angular6 eventemitter

我有一个简单的组件来渲染嵌套树视图。

<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在函数内部工作,但是事件永远不会发送到父组件。 我究竟做错了什么?或者,您可以学点新知识吗?

谢谢大家!

0 个答案:

没有答案