当前位置: 首页 > Web前端 > HTML

Angular@HostListener装饰器使用注意事项

时间:2023-03-28 10:41:28 HTML

在angular中,点击的检测方式不同。由于点击是一个事件,因此在组件内部通过简单的事件绑定检测到它。通过事件绑定在组件中检测到的简单点击如下所示:@Component({selector:"geeks",template:`{{some_text}}`})exportclassGeeksComponent{constructor(){}some_text="ClickHere";clicked(){this.some_text="EventTriggered";}}为了继续检测组件外部的点击,@HostListener装饰器处于角度使用状态。它是一个装饰器,它声明一个要侦听的DOM事件,并提供一个链接,其中包含一个在该事件发生时运行的处理程序方法。方法:这里的方法是使用@HostListener装饰器。在Angular中,它是一个装饰器,有助于捕获DOM内部发生的任何类型的事件,并为开发人员提供基于该事件执行任何操作的灵活性。在这里,对于简单的点击事件,处理程序会将点击事件引用到组件,并且对于整个DOM点击,它将使用document:click捕获。使用HostListener的语法如下:@HostListener(events,args)handler_name(args){//Dosomething}HostListener的语法需要注意三点:(1)eventName:顾名思义,接收DOM中需要监控的事件名称。(2)args:这些是事件发生时传递给处理程序方法的参数集。它以列表格式输入。(3)handle_name:这里是事件触发时调用的方法定义。它由HostListener自动调用。示例:在组件内绑定点击要在组件内绑定点击事件,请使用值“click”维护hostListener的eventName。在这种情况下,上面的代码将写成:@Component({selector:"geeks",template:`

{{some_text}}

`})exportclassGeeksComponent{constructor(){}some_text="ClickHere";@HostListener("click")clicked(){this.some_text="EventTriggered";}}点击Clickhere,屏幕会显示:EventTriggered:Bindwithclickoutsidecomponentinordertodetectoutside该组件单击以查看另一个事件。这里的点击不起作用,因为它检测到组件内部的点击。这里的关键是在DOM中寻找点击,而不仅仅是组件,所以document:click是正确的选择,同时我们需要过滤掉组件内部的事件,这是通过内部的布尔变量完成的。所以在下面给出的代码中,将添加另一个组件作为外部上下文,但是点击它会在当前组件上引发点击事件。@Component({selector:"another",template:`

外部组件

外部组件触发点这里

`})exportclassAnotherComponent{constructor(){}}@Component({selector:"geeks",template:`

内部组件

{{some_text}}

`})exportclassGeeksComponent{constructor(){}some_text="ClickHere";inside=false;@HostListener("click")clicked(){this.inside=true;}@HostListener("document:click")clickedOut(){this.some_text=this.inside?"事件触发":"事件触发外部组件";this.inside=false;}}在此示例中,如果单击OutsideComponent文本,则显示的文本将为EventTriggeredOutsideComponent。这显示了如何在GeeksComponent中捕获组件外部的点击。