После обновления раскрывающегося списка новыми элементами он отображается с вертикальной прокруткой. - PullRequest
0 голосов
/ 09 мая 2020

У меня есть раскрывающийся список, который изначально содержит один элемент.

<select (click)="loadStuff()">
  <option value="DEFAULT_ELEMENT">DEFAULT</option>
  <option *ngFor="let e of elements" [ngValue]="e">{{ e }}</option>
</select>

В раскрывающемся списке есть событие click, которое загружает раскрывающиеся элементы, если они еще не загружены:


  public elements = [];

  loadStuff() {
    if (!this.elements.length) {
      setTimeout(() => {
        for (let i=0; i < 10; i++) {
          this.elements.push('element ' + i)
        }
      }, 1000)
    }
  }

Теперь моя проблема: когда я нажимаю на раскрывающийся список, он изначально имеет один элемент, как и ожидалось:

enter image description here

Но после загрузки элементов (в то время как раскрывающийся список все еще открыт) он добавляет полосу прокрутки к элементам:

enter image description here

Затем мне нужно щелкнуть и вернуться, чтобы список отображался правильно :

enter image description here

Вот рабочая версия Angular для демонстрации проблемы: https://stackblitz.com/edit/angular-ivy-pgyd1q

Также такое же поведение с использованием jQuery: http://jsfiddle.net/6j7a3sxn/

Как я могу предотвратить это?

1 Ответ

1 голос
/ 09 мая 2020

Просто не извлекайте данные по щелчку HTMLSelectElement ... Сделайте это в ngOnInit или в преобразователе. Или не используйте собственный элемент управления select :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...