Я не могу найти руководство для пользовательского контроля формы для угловых - PullRequest
0 голосов
/ 05 марта 2019

Я попытался разработать пользовательский элемент управления датой / временем для угловых форм, который содержит инструмент выбора даты для углового материала и сторонний датчик времени. Он работает нормально, я реализовал интерфейс ControlValueAccessor, поэтому значение выходит внутри и снаружи элемента управления, но у меня проблема с проверкой. Я использовал внутреннюю форму в элементе управления и хотел использовать допустимое состояние формы для ее распространения снаружи и реализовал интерфейс Validator в элементе управления следующим образом:

validate(c: AbstractControl) {
  return this.form.valid ? null : { dateTimePickerValidator: true };
}

Я обнаружил проблему, заключающуюся в том, что внешняя форма недопустима после обновления модели внешней службой, поэтому this.form.valid имеет значение false, когда вызывается функция validate, но после этого она имеет значение true, и я могу отследить это, выведя form.valid в HTML или NgForm экземпляр через console.log. Это действительно странное поведение, и я не могу найти источник этой ошибки.

UPDATE: Я понял, что форма отключена во время вызова метода validate. Но я не понимаю, почему он отключен. У меня нет кода для отключения этого только отключенного атрибута на самом элементе управления в шаблоне хоста.

Так есть ли руководство, описывающее, как реализовать пользовательский элемент управления? Идея состоит в том, чтобы использовать валидатор внутреннего контроля, чтобы проверить значение и распространить ошибку наружу.

Заранее спасибо!

...