Угловой выпадающий список исчезает

Я использую Angular 5.1.2 + Bootstrap 3.3.7 + ngx-bootstrap 2.0.0-rc.0. Я пытаюсь создать выпадающую страницу входа.

  <ul class="nav navbar-right">
        <li class="dropdown" dropdown>
          <a href="#" dropdownToggle class="dropdown-toggle" data-toggle="dropdown">
            <img src="assets/images/login_logo.png" alt="" class="img-responsive">
            </a>

          <!-- Dropdown Form -->
          <ul *dropdownMenu class="dropdown-menu" role="menu">
            <form class="form-group" action="index.html" method="post">
              <input class="form-control form-control-sm" type="text" placeholder="Enter your name">
              <input class="form-control form-control-lg" type="text" placeholder="Enter your name">
            </form>
          </ul>

Раскрывающийся список работает нормально, но проблема в том, что когда мы нажимаем на содержимое раскрывающегося списка (то есть поле ввода в этом случае), раскрывающийся список исчезает. Это потому, что когда мы щелкаем по нему, вызов отправляется обратно на загрузчик, чтобы закрыть его, и это ожидаемое поведение. Чтобы предотвратить возврат вызова, мы должны использовать функцию jQuery:

$('.dropdown-menu input').click(function(e) {
        e.stopPropagation(); //This will prevent the event from bubbling up and close the dropdown when you type/click on text boxes.
    });

Однако я не хочу использовать jQuery с Angular. Есть ли другое решение?

0 ответов

Попробуй это:

<input ... onclick="(event||window.event).stopPropagation()">

(event||window.event) для совместимости с IE - в IE событие будет неопределенным, поэтому вместо него используется window.event. Если вам нужно, чтобы он работал на IE8 или более ранней версии, вам нужно добавить что-то, чтобы использовать cancelBubble, если stopPropagation недоступен.

См. Как остановить распространение событий с помощью встроенного атрибута onclick? для связанных деталей

Другие вопросы по тегам