我有一个显示数据表的子组件 . 我想在每一行上提供一个“选择”按钮,但仅当表格显示在需要按钮的上下文中时,即表格可以单独显示,也可以作为表格字段的选择 .
我的想法是使用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 回答
select.observers.length
将告诉您EventEmitter上有多少订阅者(在此示例中,对于名为'select'的EventEmitter) . 一般模式是<myEmitter>.observers.length
.我认为
refCount()
是你最好的选择,这里是docs的链接 .