Angular2-指令中的ViewChild

Angular2-指令中的ViewChild,angular,angular2-directives,Angular,Angular2 Directives,我有一个名为EasyBoxComponent的组件, 和一个带有这个viewchild的指令 @ViewChild(EasyBoxComponent) myComponent: EasyBoxComponent; 此.myComponent始终未定义 我认为这是正确的语法 我的html是 <my-easybox></my-easybox> <p myEasyBox data-href="URL">My Directive</p> Content

我有一个名为EasyBoxComponent的组件, 和一个带有这个viewchild的指令

@ViewChild(EasyBoxComponent) myComponent: EasyBoxComponent;
此.myComponent始终未定义

我认为这是正确的语法

我的html是

<my-easybox></my-easybox>
<p myEasyBox data-href="URL">My Directive</p>

ContentChild与AfterContentInit接口一起工作,因此模板应如下所示:

<p myEasyBox data-href="URL">
    <my-easybox></my-easybox>
</p>

由于该组件不是指令的子级,因此子选择器将不起作用

相反,使用引用

<my-easybox #myBox></my-easybox>
<p [myEasyBox]="myBox" data-href="URL">My Directive</p>

在定义myComponent时,指令没有视图,因此
@ViewChild()
是没有意义的。请改为尝试
@ContentChild()
。如果它不起作用,请提供更多代码来演示您试图完成的任务。您不能使用
ContentChild()
@ViewChild()
来查询组件之外的内容。仅投影内容(如文本
MyDirective
所示)或组件视图中的直接子级<代码>是具有该指令的元素的同级。Angular不提供查询它的方法。您可以使用
querySelector
,但可能有更好的方法。但我需要更好地理解您试图解决的实际问题,以便能够提出建议。我想制作一个打开图像的组件。。。。以及添加到每个图像的指令。每次我点击一个图像(指令)。。。我想将src发送到组件以打开itI,它将使我的组件通过服务与指令通信
<my-easybox #myBox></my-easybox>
<p [myEasyBox]="myBox" data-href="URL">My Directive</p>
@Input('myEasyBox') myComponent: EasyBoxComponent;