Пользовательский Formcomponent с ControlValueAccessor / Validator имеет асинхронное обновление элемента управления внутри проверки - PullRequest
0 голосов
/ 01 апреля 2020

Внутри моего angular приложения я сгенерировал компонент, который служит пользовательским FormControl, и он реализует ControlValueAccessor и Validator.

Этот компонент используется внутри FormGroup и имеет к нему прикреплен валидатор (например, его значение должно содержать не менее 10 символов или w / e). Когда происходит изменение значения внутри фактического input внутри моего пользовательского FormControl, срабатывает метод validate. Внутри этого метода я могу получить доступ к FormControl, но у него есть «состояние перед изменением», т. Е. Если пользователь ввел что-то неправильное (согласно ограниченному валидатору), оно выдаст мне свое последнее значение / ошибка / состояние ...

Чтобы добраться до обновленного состояния, я использую хакерский

setTimeout(()=>{// code goes here},0);

Как я могу получить обновленное состояние внутри validate без setTimeout? Или есть что-то вроде afterUpdate хука, о котором я не знаю?

Вот мой стек-блиц: https://stackblitz.com/edit/angular-8-material-starter-template-tubfwx?file=src%2Fapp%2Fcustom-form-control%2Fcustom-form-control.component.ts

...