计算事件的绑定数量

时间:2016-08-25 05:31:34

标签: angular

我有一个显示数据表的子组件。我想提供一个" select"每行上的按钮,但仅当表格显示在需要按钮的上下文中时,表格可以单独显示,也可以作为表格字段的选择。

我的想法是使用EventEmitter进行"选择"按钮并仅在有事件订阅者时显示按钮。这是如何实现的,还是有更好的方法来实现这一目标?

我使用角度2 rc.5

编辑:示例代码:

@Component({directives: [Child], template: "<child (select)="onSelect()"></child>"})
class Parent {
}

@Component({selector: "child", template: "<div *ngIf="showSelect" (click)="onSelect()">select</div>"})
class Child {
    @Output("select") select: EventEmitter<any> = new EventEmitter<any>();
    get showSelect() {
        // return true if there is any subscription to Output("select") 
    }
}

只有在父级定义了一个侦听器时,才会显示子组件中的DIV&#34;选择&#34;事件。在这种情况下,它通过将其绑定在模板中来实现,但是如果有人直接在子组件上调用.subscribe(),那么它也应该有效。&#34;选择&#34;属性。

2 个答案:

答案 0 :(得分:0)

select.observers.length会告诉您EventEmitter上有多少订阅者(在此示例中,对于一个名为&#39; select&#39;的EventEmitter)。一般模式是<myEmitter>.observers.length

  

0表示您有订阅者。

答案 1 :(得分:-1)

我认为refCount()是您最好的选择,此处是指向docs的链接。