Angular 6, как правильно использовать фокусировку, но предотвратить ее выполнение при нажатии на себя - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть демонстрация моей проблемы на стеке, которую вы можете попробовать: https://stackblitz.com/edit/angular-gitter-u7erfg?file=app%2Fapp.component.ts

Моя цель - сделать так, чтобы div, который щелкает, ловил, чтобы предотвратить выполнение фокусировки (я не могу предотвратить запуск фокусировки, но я могу сказать, помещать ли внутри метод, вызванный focusout, и проверять мое состояние, каким бы оно ни было, там ).

Или, альтернативно, есть другой метод, который мог бы достичь аналогичных, если лучше, результатов?

1 Ответ

0 голосов
/ 12 сентября 2018

Как насчет этого: stackblitz

В основном он использует mousedown, чтобы предотвратить событие по умолчанию focusout.И когда файл выбран, он закрывает зеленый квадрат:

export class AppComponent  {
  opened = false;
  dostuff = false;

  toggle(){
    this.opened = !this.opened
    if(!this.opened) this.dostuff = false;
  }


  mouseInside(event){
    this.dostuff = true;
    event.preventDefault();
  }

  focusOut(){
    if (!this.dostuff) {
      this.opened = false;
    }
  }

  onFileChange(event) {
    this.opened = false;
    this.dostuff = false;
  }
}
...