2017-01-20 35 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