Angular 特定目标2的事件委派
如何为angular 2中的特定目标实现事件委派 考虑使用下面的htmlAngular 特定目标2的事件委派,angular,angular2-template,Angular,Angular2 Template,如何为angular 2中的特定目标实现事件委派 考虑使用下面的html <ul> <li><span>hello</span><button>button</button></li> </ul> 我在angular的实际场景: <div class="list-group" (click)="selectOption($event)"> <button type="but
<ul>
<li><span>hello</span><button>button</button></li>
</ul>
我在angular的实际场景:
<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>
{{option.displayColumnValue}}
({{option.email}})
您可以通过使用
@HostListner
@Directive({selector: '[dele]')
export class delegator{
@HostListener('click') clicked($event) {
console.log($event.target); // this will be a child button
}
}
现在就这样说吧
<ul dele>
<li><span>hello</span><button>button</button></li>
</ul>
在html中添加指令以及
<ul>
<li dele (onFocusOut)='clickFunction($event)'><span>hello</span><button>button</button></li>
</ul>
- hellobutton
很抱歉,为什么不将所有可点击区域包装在一个div中,然后在其上放置一个点击事件?您可以将一个函数绑定到ul元素中的(点击)事件,但这无法让您控制在没有额外逻辑的情况下点击了哪个元素,因此在angular out-of-the-box中没有实现这一点的选项,你必须自己处理。我不想对每个按钮重复单击事件。你具体想做什么?你能解释一下你的用例吗?我想针对的是li,而不是它里面的按钮$('ul')。在('click','li',function(){console.log($(this))//每当你在它里面单击时,它总是指li})在我的用例中,我有多个li,所以我不想让事件重复1000次,我想在angular中没有什么可以直接实现这一点。我通过从目标元素const listItemBtn=event.target.closest('.list group item')中获取最接近的('li')来解决它;是的,这很有道理
@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);
}
}
<ul>
<li dele (onFocusOut)='clickFunction($event)'><span>hello</span><button>button</button></li>
</ul>