Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 无法访问指令内部事件的内部属性?_Angularjs_Angularjs Directive - Fatal编程技术网

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”。。。这就是我试图做的,当你不应该了解事件的路径时。您应该获取事件目标的父元素。