首页 文章

计算事件的绑定数量

提问于
浏览
2

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

我的想法是使用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") 
    }
}

仅当父级定义此“select”事件的侦听器时,才应显示子组件中的DIV . 在这种情况下,它通过在模板中绑定它来实现,但是如果有人直接在Child组件的“select”属性上调用.subscribe(),它也应该工作 .

2 回答

  • 0

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

    0表示您有订户 .

  • -1

    我认为 refCount() 是你最好的选择,这里是docs的链接 .

相关问题