你好,我已经搜索了很长时间了,我无法弄清楚。因此,让我解释一下这个问题,我需要向其中添加验证消息的多个控件,而我只想创建一个指令来完成此操作。
话虽如此,我还是要为我要完成的工作和要做的工作创建一个小例子。
我有一个看起来像这样的控件:
<div class="form-group>
<label>{{label}}</label>
<input type="text" [(ngModel)]="value"/>
</div>
及其选择器可能类似于:<textbox validation controlTypeToAddValidationTo="input" label="name"></textbox>
我创建了一条指令,如下所示:
@Directive({ selector:'validation' })
export class ControlValidation implements OnInit{
@Input() controlTypeToAddToolTipTo:string;
constructor(
private elementRef:ElementRef,
private render:Render2
){}
ngOnInit():void{
//TODO add a tooltip to say hello to the input.
}
}
好的,现在我们有了一条指令,但是我的问题是我想访问输入,我想使用类似jQuery方法的方法$('input')
,但是我不知道该怎么做。从指令执行此操作。如果我想将工具提示添加到输入或按钮或div或其他内容,我希望能够传递。
所以我尝试了
1. this.elementRef.nativeElement.getElementsByTagName('input')
,但不会返回孩子。
2. this.render.selectRootElemet('nativeElement')
返回第一个文本框元素
3. this.render.nextSibling(this.elementRef);
返回未定义
现在好问我一个问题,如何在elementRef中选择想要的项目?