2016-08-25 11 views
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") 
    } 
} 

在儿童组分DIV只应显示如果父定义了一个侦听到该“选择”事件。在这种情况下,它通过将其绑定到模板中来实现,但如果有人直接在Child组件的“select”属性上调用.subscribe(),它也应该可以工作。

回答

0

我认为refCount()是你最好的选择这里是一个链接到docs

+0

谢谢你的回答。你能解释一下,我是如何从EventEmitter获得refCount()的? – Normalo

+0

当然,抱歉没有更好地解释它。你能否添加一个小例子的代码? –

+0

我向我的问题添加了示例代码。顺便说一句,“最佳选择”是什么意思?该解决方案是否存在任何缺陷? – Normalo

0

select.observers.length会告诉你EventEmitter有多少订阅者(在本例中,对于名为'select'的EventEmitter)。一般模式是<myEmitter>.observers.length

0表示您有用户。

相关问题