【发布时间】:2018-03-25 16:45:38
【问题描述】:
对于自动化测试,我想填写 angular 4 表格。但是在提交之后,Angular 并没有意识到这些变化。
我的表单使用带有表单组和表单控件的表单生成器。
在应用程序之外,我需要做一些自动化测试。因此,当我尝试填写表单 $('#firstName').val('John'); 并提交表单时:Angular 为我提供了表单中的先前值并且没有检测到它的更改。
我尝试了多种解决方案,但没有什么比这更有效
- 对表单提交运行更改检测
this.form.updateValueAndValidity()- 玩
ngZone - 使用 Change 事件
我不知道如何强制 Angular 检测表单上的更改。
更新 HTML
<input type="text" class="input-event" name="firstName" id="firstName" placeholder="First Name" [formControlName]="formFieldNames.firstName" />
更新 2
这是一个例子:https://run.plnkr.co/sqseg6kObDICjdEa/
如果您用一些数据填写表单并提交,您将在控制台中获得正确的数据。
现在,如果你输入控制台document.getElementById('fullname').value = 'Jean';
然后重新提交,你会看到angular没有更新数据,我想知道我该怎么做。
【问题讨论】:
-
你也可以发布你的html页面
-
我更新了帖子。如您所见,普通的 HTML
-
您可以在组件 ts 类中将值设为
this. formFieldNames.controls['firstName']不确定是什么条件让您选择 jquery。还有ElementRef,你可以用它来处理元素并获取数据 -
jQuery只是一个例子,我再次更新了帖子,你可以查看。谢谢
标签: angular angular-reactive-forms