Цель: если пользователь щелкает по любому элементу top уровня mat-extension-panel-header-header, свернуть все открытые вложенные элементы уровня заголовка mat-extension-panel-header, например:
- Нажмите Основной заголовок 1 , чтобы развернуть его
- Нажмите Подзаголовок 1 , чтобы развернуть его
- Нажмите Основной заголовок1 , чтобы свернуть его. Это должно вызвать событие, которое сворачивается Подзаголовок 1 .
По сути, это «служебная задача», которую нужно очистить, если пользователь оставляет панели развернутыми.
Проблема:Если дважды быстро щелкнуть один из элементов заголовка mat-extension-panel-header уровня top (например, пока анимации развертывания / свертывания все еще работают), в консоли выдается следующая ошибка:
ExpressionChangedAfterItHasBeenCheckedError: Выражение изменилось после его проверки. Предыдущее значение: «mat-extended: false». Текущее значение: 'mat-extended: true'.
Если вы продолжите вызывать эти ошибки, в конечном счете, они будут продолжать работать бесконечно и браузер полностью заблокируется.
См. Проект Stackblitz здесь: https://stackblitz.com/edit/expression-changed-error
Я подумывал сделать что-то вроде отключения щелчков, пока анимация открытия / закрытия не закончится, но я уверен, что должна быть причина, по которой это происходит, и правильное решение для этого.