У меня есть простая панель управления, которая имеет элемент управления Angular Mat-Slide-Toggle следующим образом:
<mat-slide-toggle (change)="onQAStateDisplayChanged($event)">Display QA Status</mat-slide-toggle>
Функция, вызываемая для события change
, просто запускает событие следующим образом:
@Output() qaStateDisplayChanged: EventEmitter<boolean> = new EventEmitter();
...
onQAStateDisplayChanged(event: MatSlideToggleChange) {
this.qaStateDisplayChanged.emit(event.checked);
}
Мой компонент контейнера, прослушивая событие, вызывает функцию, выполнение которой занимает несколько секунд. Я надеялся, что при переключении SlideToggle будет происходить событие qaStateDisplayChanged
, и SlideToggle будет немедленно скользить по. На самом деле вы нажимаете SlideToggle и ничего визуально не меняется, пока все не завершится через несколько секунд, что не очень удобно для пользователя!
После получения события выполняется серия операций с 3D-моделью с использованием Three. js. Похоже, что браузер не может обновить sh SlideToggle, потому что он интенсивно манипулирует 3D-моделью. Как только модель обновится, браузер сможет обновить пользовательский интерфейс, и SlideToggle переместится по горизонтали.
Кто-нибудь может предложить альтернативный подход, который был бы более адаптивным?