Есть ли способ отложить открытие аккордеона ngx-bootstrap? - PullRequest
0 голосов
/ 30 июня 2018
<accordion [closeOthers]=true>
  <accordion-group *ngFor="let activity of activities" [heading]="activity.Name" (click)="openPanel(activity)" (isOpenChange)="openStatusChange($event)">
    <ul *ngFor="let chemical of chemicals">
      <li>{{chemical.BrandName}}</li>
    </ul>
    <div *ngIf="!chemicals?.length > 0">No chemicals associated with this activity type.</div>
  </accordion-group>
</accordion>

Когда щелкается заголовок аккордеона, он открывается и запускается, и запускает openPanel (), который является http.get, который затем заполняет панель. Если массив возвращается пустым, * ngIf отобразит сообщение «нет связанных вещей».

Проблема в том, что между моментом открытия аккордеона и заполнением массива очень небольшое отставание, поэтому массив химикатов всегда пуст при открытии аккордеона. Это делает так, что сообщение «без связанного материала» появляется примерно на полсекунды, затем список заполняется. Поэтому мне интересно, есть ли способ отложить открытие до заполнения массива или приветствовать предложения.

1 Ответ

0 голосов
/ 30 июня 2018

Вы можете использовать логический флаг или функцию для ngIf. Установите флаг, когда обещание http возвращается как успешное, таким образом, ngIf срабатывает только после разрешения обещания http.

что-то вроде:

http.get('url').subscribe(response => {
  show = true;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...