Как сохранить метод onClickOutside () отключенным, пока я не использую onClick ()? - PullRequest
0 голосов
/ 08 февраля 2019

Когда я щелкаю по своему элементу с помощью прослушивателя событий, я должен был показать свое всплывающее окно, которое работает очень хорошо, пока я не введу onClickOutside ().Использование ng-click-outside

export class Component {
  private isPopupDisplayed: boolean = false;

  onClick() {
    console.log('Clicked');
    this.isPopupDisplayed = true;
  }
  
  onClickedOutside(event) {
    this.isPopupDisplayed = false;
  }
  
}  
.popup{
  position: absolute;
  z-index: 3;
  width: 200px;
  height: 94px;
  background-color: $secondary-color;
  left: 0%;
  bottom: 0%;
  padding: 15px 0px;
  margin: 12px;
  border: 1px solid $modal-border-color;
  border-radius: 4px;
  box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.25);

  li:hover {
    background-color: $accent-color;
  }

  li {
    padding-top: 5px;
    height: 32px;
  }
}
<div *ngIf="isPopupDisplayed" >
        <ul class="popup" (clickOutside)="onClickedOutside($event)">
            <li><a>My Details</a></li>
            <li><a>Sign out</a></li>
        </ul> 
    </div>

    <div class="presenter-menu_avatar" (click)="onClick()" >
        <img [src]="avatarUrl">
    </div>

Когда я пытаюсь внедрить метод onClickOutside (), я вижу, что оба метода запускаются одновременно, так как мое всплывающее окно все еще не существуети это автоматически приводит к тому, что он даже не отображается.

Моя цель - просто показать всплывающее окно при onClick () и скрыть его, если щелкнуть за пределами него.

1 Ответ

0 голосов
/ 08 февраля 2019

Добавление события stopPropagation в функцию щелчка

  onClick(event) {
    event.stopPropagation()
    console.log('Clicked');
    this.isPopupDisplayed = true;
  }




<div class="presenter-menu_avatar" (click)="onClick($event)" >
    <img [src]="avatarUrl">
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...