2016-08-25 14 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表示您有用戶。

相關問題