小编And*_*rio的帖子

指令点击外角6

我将Angular从4升级到6,因此我的点击政策出现问题,它停止了所有组件的工作.

我的指示:

import { Directive, Output, EventEmitter, ElementRef, HostListener } from '@angular/core';

@Directive({
  selector: '[clickOutside]'
})
export class ClickOutsideDirective {

  constructor(private _elementRef : ElementRef) { }

  @Output()
  public clickOutside = new EventEmitter();

  @HostListener('document:click', ['$event.target'])
  public onClick(targetElement) {
      const clickedInside = this._elementRef.nativeElement.contains(targetElement);
      if (!clickedInside) {
          this.clickOutside.emit(null);
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的component.html使用了这个指令:

<div id="sidenav" *ngIf="this.opened" class="sidenav" [ngClass]="getClasses()" [ngStyle]="getStyles()" clickOutside (clickOutside)="closeOutsideSidenav()">
  <header> {{ navTitle }} </header>
  <i *ngIf="this.showCloseButton" class="iconic iconic-x-thin close-icon" (click)="closeSidenav()"></i>
  <ng-content></ng-content>
</div>
<div *ngIf="this.backdrop && this.opened" class="sidenav-backdrop"></div>
Run Code Online (Sandbox Code Playgroud)

angular2-directives angular angular6

8
推荐指数
3
解决办法
2万
查看次数

标签 统计

angular ×1

angular2-directives ×1

angular6 ×1