Angularjs 无法访问指令内部事件的内部属性?
我有一个关于点击方法的指令Angularjs 无法访问指令内部事件的内部属性?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个关于点击方法的指令 @Directive({ selector: '[clickOutside]' }) export class ClickOutsideDirective { constructor(private _elementRef: ElementRef) { } @Output() public clickOutside = new EventEmitter<MouseEvent>(); @HostListener('document:click
@Directive({
selector: '[clickOutside]'
})
export class ClickOutsideDirective {
constructor(private _elementRef: ElementRef) {
}
@Output()
public clickOutside = new EventEmitter<MouseEvent>();
@HostListener('document:click', ['$event', '$event.target'])
public onClick(event: MouseEvent, targetElement: HTMLElement): void {
if (!targetElement) {
return;
}
const clickedInside = this._elementRef.nativeElement.contains(targetElement);
if (!clickedInside) {
console.log(event)
console.log(event.path) =>gives error,not able to compile
console.log("targetelement",targetElement)
console.log("native element",this._elementRef.nativeElement)
this.clickOutside.emit(event);
}
}
}
@指令({
选择器:“[单击外部]”
})
导出类ClickOutside指令{
构造函数(私有_elementRef:elementRef){
}
@输出()
public clickOutside=new EventEmitter();
@HostListener('文档:单击',['$event','$event.target']))
public onClick(事件:MouseEvent,targetElement:HTMLElement):void{
如果(!targetElement){
返回;
}
const clickedInside=此。_elementRef.nativeElement.contains(targetElement);
如果(!clickedInside){
console.log(事件)
console.log(event.path)=>给出错误,无法编译
日志(“targetelement”,targetelement)
log(“本机元素”,this.\u elementRef.nativeElement)
点击outside.emit(事件);
}
}
}
我想访问事件的PATH属性。当我获取console.log(event)时,我可以看到path属性,但是当我尝试访问event.path时
我得到编译错误,为什么会这样?如何在onClick方法中访问当前的click事件及其内部属性?在中或其超类的文档中没有列出
路径属性。正如您所发现的,MouseEvent的TypeScript定义中也没有这样的path
属性
因此,您希望使用运行时存在于浏览器中的属性,但该属性没有文档记录,因此可能不是标准属性,因此在其他浏览器中可能不存在。你可以这样做,但你应该意识到风险。只需使用event['path']
而不是event.path
是否有其他解决方案?我需要最好的方法,我只想检查我单击的任何元素的父div是否有id“datepicker”。。。这就是我试图做的,当你不应该了解事件的路径时。您应该获取事件目标的父元素。