Я никогда раньше не работал с Angular или Angular2, но теперь мне нужно сделать обновление для сайта, работающего в моем домене, который использует Angular2. Мне нужно программно заполнить текстовое поле и нажать «Отправить», но после установки значения текстового поля с использованием .value = «val» он по-прежнему обрабатывает текстовое поле, как если бы оно было пустым.Программная настройка формы и ввода «ng-dirty»
Я читал на угловом уровне и теперь понимаю концепцию ng-dirty и ng-pristine, но программное изменение класса на ng-dirty все равно не работает.
Кажется, что даже если я меняю классы, он по-прежнему не обновляет «нетронутый» статус и по-прежнему считает, что текстовое поле пуст.
Я читал про «markAsDirty()» и пытался использовать его, но я получаю «markAsDirty не функция». Мне просто нужно выяснить, как обновить страницу, чтобы она поняла, что текстовое поле не пустое и позволяет мне отправить форму.
Большое спасибо!
Edit: форма Страница:
<form id="form_register" novalidate="">
<div class="form-steps">
<div class="form-group">
<div class="input-group">
<input autocomplete="off" class="form-control ng-pristine ng-invalid ng-touched" data-is-regex="true" data-mask="[a-zA-Z0-1\.]+" id="username" name="username" ngcontrol="username" placeholder="Username" required="" style="color: black !important;" tabindex="13" type="text">
</div>
</div>
<div class="form-group">
<div class="input-group">
<input autocomplete="off" class="form-control ng-untouched ng-pristine ng-invalid" id="password" name="password" ngcontrol="password" placeholder="Password" required="" style="color: black !important;" tabindex="14" type="password">
</div>
</div>
<div class="form-group">
<button class="btn btn-block btn-lg btn-info" tabindex="4" type="submit">
Log In
</button>
</div>
</div>
</form>
Моя проблема заключается в том, что это:
document.getElementById("username").value = "testuser";
document.getElementById("password").value = "testpass";
document.getElementsByClassName("btn btn-block btn-lg btn-info")[0].click();
заканчивает тем, что дает мне сообщение, говорящее имя пользователя и пароль необходимы, даже если есть значение, показывающее в текстовом поле. Просто нажмите на текстовое поле, набрав символ, а затем его удаление позволит мне отправить форму, но мне нужно выполнить это без взаимодействия с пользователем.
Пожалуйста показать соответствующую «[MCVE]» код, чтобы воспроизвести проблему. –
Кроме того, используйте тег 'angularjs', если вы используете AngularJS 1.x или тег' angular2', если вы используете Angular 2, а не оба, если только вы не смешиваете две рамки. –
Хорошо, я обновил свое сообщение, чтобы отразить то, что вы сказали. – downvoter24