Я создал пользовательский элемент управления, который реализует ControlValueAccessor, и поместил этот элемент управления в угловую форму, управляемую шаблоном.
Это форма, которая позволяет устанавливать даты начала и окончания некоторых действий для планирования и дату началав прошлом не действует.У меня есть валидатор для этого, поэтому он показывает ошибку, когда я нажимаю на этот элемент управления.Но когда пользователь открывает страницу, он / она не видит никаких ошибок сразу, потому что пользователю нужно нажать на этот элемент управления, чтобы установить его в сфокусированном состоянии.
Я хочу сделать «простую» вещь - просто автоматическисфокусировать элемент управления, когда дата в прошлом, чтобы получить этот элемент управления, показывающий ошибку.Проблема, с которой я столкнулся, заключается в том, что ngAfterViewInit в родительском компоненте вызывается перед writeValue () в элементе управления.Так что я могу установить фокус, но никаких ошибок не отображается.Если я нажимаю вручную на другое поле объявления, а затем обратно - я вижу ошибку.Проблема может быть решена путем обертывания моего кода для установки сфокусированного состояния в функции и перехода к setTimeout с нулевым интервалом.
Это не первый раз, когда я сталкиваюсь с такой проблемой, когда ngAfterViewInit вызывается слишком рано, но нет контролируемого / синхронного способа выполнить какую-либо операцию позже.
Есть ли способ избежать setTimeout в ngAfterViewInit ?
Вот небольшой пример без setTimeout, который показывает, что writeValue вызывается после ngAfterViewInit : https://stackblitz.com/edit/angular-ngafterviewinit-quirks
Заранее спасибо!