Как проверить ввод, который был атрибутирован в коде Typescript? - PullRequest
1 голос
/ 11 июня 2019

У меня есть поле ввода HTML, которое получает дату.Когда это происходит, он активирует контроль валидации на поле, и я получаю сообщение об ошибке, если дата неверна.Теперь мне нужно установить какое-то значение, которое я получаю из Firestore для этого входа, и я использую

(<HTMLInputElement>document.getElementById(id)).value = value

для этого.Это работает хорошо, но значение не распознается валидатором.Я хочу знать, как я могу это реализовать.Я использую угловые 7 и угловые валидаторы формы.Валидатор отлично работает при получении значения из пользовательского интерфейса.

Я пытался использовать функцию setError из элемента управления формы, присваивая ему значение null, но для моего кода это неэффективно.Я также пытался вызвать события DOM в машинописи, потому что я думаю, что это происходит в пользовательском интерфейсе.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Вы не хотите получать доступ к DOM в Angular. Если вы хотите использовать ссылку, используйте ElementRef, для манипуляции вам нужен Renderer2. Однако и здесь вам не нужно.

Просто исправьте значение

this.form.patchValue({
    'date': value
});

Иногда вы можете не захотеть генерировать событие при обновлении значений

this.form.controls['date'].patchValue(dateData, { emitEvent: false });

Это может понадобиться для проверки правильности вручную во всех полях

Object.keys(this.form.controls).forEach(key => {
  this.form.get(key).markAsDirty();
});
0 голосов
/ 11 июня 2019

Прежде всего, используйте @ViewChild для доступа к элементу ввода, вероятно, это первая ошибка из-за доступа DOM.Позже, при сборе данных из firebase, установите значение для указанного элемента ввода и укажите, что значение изменилось с помощью ngModel (https://angular.io/api/forms/AbstractControlDirective#valueChanges)

).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...