Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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
Javascript @HostListener的问题_Javascript_Angular_Typescript_Angular8 - Fatal编程技术网

Javascript @HostListener的问题

Javascript @HostListener的问题,javascript,angular,typescript,angular8,Javascript,Angular,Typescript,Angular8,我在一个角度组件中有以下代码,并按预期工作: @HostListener('document:click', ['$event']) onClick(event) { if(!this.eRef.nativeElement.contains(event.target)) { console.log("clicked outside"); // code to close the component } } 但这给我带来了一个问题。我的要求是在用户单击文本时打开组件,在用户单击组件外

我在一个角度组件中有以下代码,并按预期工作:

@HostListener('document:click', ['$event'])
onClick(event) {
 if(!this.eRef.nativeElement.contains(event.target)) {
  console.log("clicked outside");
  // code to close the component
 }
}
但这给我带来了一个问题。我的要求是在用户单击文本时打开组件,在用户单击组件外部时关闭它。问题是,由于文本在组件外部,所以单击它会调用上述方法,并且满足“if”条件,因此组件会立即关闭。

您的代码应该是

@HostListener("click", ["$event"])
没有

@HostListener('document:click', ['$event'])

你能发布你的孩子和父母的组件吗?你能在这里详细说明一下组件布局吗?我对angular不太精通。我没有看到这里的组件代码,但我将做我的猜测。当用户单击文本时,将标志设置为true,并在click hotlistener中检查标志是否与事件目标一起为true,然后相应地采取措施。如果两个条件都满足,则打开一个组件,否则关闭该组件。请提供一个,最好是堆栈闪电:)为什么没有
文档:单击