[英]Nesting NgIf and (click) in Angular2
您仍然可以使用聲明性方法,只是在折疊時忽略事件
@HostListener('window:click', ['$event'])
windowClickHandler(event) {
if(!this.expanded) return;
collapse();
}
另一種方法可以是僅在擴展時啟用的指令
@Directive({
selector: 'globalClick'
host: {
'[style.display]':'"none"',
}
}
class GlobalClick {
@Output() globalClick:EventEmitter = new EventEmitter();
@HostListener('window:click', ['$event'])
windowClickHandler(event) {
this.globalClick.emit(event);
}
}
然后像
<span *ngIf="expanded" (globalClick)="collapse($event)">
我直接使用window對象,但不建議這樣做:
//save reference
this.listener = (event)=>{...};
window.addEventListener('click', this.listener);
window.removeEventListener('click', this.listener);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.