首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特定目标角度2的事件委托

特定目标角度2的事件委托
EN

Stack Overflow用户
提问于 2017-12-21 00:37:09
回答 1查看 471关注 0票数 1

如何在angular 2中实现特定目标的事件委托

考虑使用下面的html

代码语言:javascript
复制
<ul>
   <li><span>hello</span><button>button</button></li>
</ul>

我还想实现事件委托,即使用户单击了li中的span或按钮,li事件也会运行。

例如,我们可以在jquery中使用以下命令来实现此目的:

代码语言:javascript
复制
$('ul').on('click', 'li', function() {
  console.log($(this)) // always log the li whenever you clicked inside it
})

我在angular中的实际场景是:

代码语言:javascript
复制
<div class="list-group" (click)="selectOption($event)">

<button type="button" class="list-group-item" *ngFor="let option of options; let i = index"
 [attr.data-value]="option.key" [attr.data-label]="option.displayColumnValue">
  <span [title]="option.displayColumnValue ">
   {{ option.displayColumnValue }} 
  <small *ngIf="option.email">({{ option.email }})</small>
  </span>

  <a *ngIf="option.group" class="drilldown" [attr.data-key]="option.key"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
</button>

EN

回答 1

Stack Overflow用户

发布于 2017-12-21 00:41:39

您可以通过使用@HostListner创建指令来实现这一点

代码语言:javascript
复制
@Directive({selector: '[dele]')
export class delegator{
   @HostListener('click') clicked($event) {
      console.log($event.target); // this will be a child button
   }
}

现在这样叫它

代码语言:javascript
复制
<ul dele>
   <li><span>hello</span><button>button</button></li>
</ul>

编辑

如果要将hostlistner添加到特定元素,则使用事件

代码语言:javascript
复制
@Directive({
   selector: "[dele]"
})
export class deleDirective {
   @Output() onFocusOut: EventEmitter<boolean> = new EventEmitter<false>();

   @HostListener("focusout", ["$event"])
   public onListenerTriggered(event: any): void {
       this.onFocusOut.emit(true);
   }
}

在html中添加指令以及

代码语言:javascript
复制
<ul>
       <li dele (onFocusOut)='clickFunction($event)'><span>hello</span><button>button</button></li>
 </ul>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47910624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档