2017-01-20 31 views
1

我試圖在我的一個指令中實現一個活動狀態,以便只要isActive設置爲0,就可以獲得active類的元素true在指令實例中。Angular 2在指令類中獲取相同類型的所有指令

問題是,我似乎無法在任何給定的時間拿起超過1個指令,這似乎也是獲取其他指令的相同元素。

​​

我該如何確保它能夠獲得相同類型的所有其他指令?我很確定@ContentChildren是要走的路,但它似乎並不奏效。

編輯:下面是我如何使用它們:

<button modalOpen modalId="test1">Open modal nr 1</button> 
<button modalOpen modalId="test2">Open modal nr 2</button> 
<button modalOpen modalId="test3">Open modal nr 3</button> 

所以當modalOpenmodalId="test1"被觸發,該按鈕應該得到一個active類和所有其他按鈕應該失去他們的。

+0

'ContentChildren'很好。您能否指出指令的應用位置以及它們如何傳遞給'ModalOpenDirective'? –

+0

我想你需要確定哪個元素已被點擊。帶有QueryList的ContenChildren將給你指令的所有實例。您需要將其過濾以獲得正確的實例。但我想普林克是需要看看究竟發生了什麼。 – micronyks

+0

@micronyks它只會自己提取,所以這在目前不是問題。但我想Gunter提出了一個觀點。我將不得不創建一個包裝指令,我認爲。 – Chrillewoodz

回答

0

modalOpen只包含單個元素,因此ContentChildren只返回一個。

如果將其更改爲

<div modalOpen> 
    <button modalId="test1">Open modal nr 1</button> 
    <button modalId="test2">Open modal nr 2</button> 
    <button modalId="test3">Open modal nr 3</button> 
</div> 

ContentChildren將返回3個元素。

雖然這不會通過modalIdmodalOpen