我有一个显示数据表的子组件。我想提供一个" 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;属性。
答案 0 :(得分:0)
select.observers.length
会告诉您EventEmitter上有多少订阅者(在此示例中,对于一个名为&#39; select&#39;的EventEmitter)。一般模式是<myEmitter>.observers.length
。
0表示您有订阅者。
答案 1 :(得分:-1)
我认为refCount()
是您最好的选择,此处是指向docs的链接。