【问题标题】:Angular 6, Externally update variables from data in form fields filled by javascriptAngular 6,从由javascript填充的表单字段中的数据外部更新变量
【发布时间】:2019-05-30 01:43:04
【问题描述】:

我实际上是在尝试从桌面数据库/CRM 工具将数据添加到网站,其中网站不存在 API。 我发现我可以加载网页、登录并使用 Javascript 来使用来自 CRM 的数据填写表单。

我可以看到表单字段与我的值是正确的。但是,除非我实际在表单字段中输入内容,否则 Angular 6 变量不会更新。所以我收到“必填字段”警告。

有没有办法强制 Angular 获取表单字段中的值?

【问题讨论】:

  • 能否请您发布代码和正确的用例?
  • document.getElementById('myField').value = 'myValue'

标签: javascript angular twitter-bootstrap


【解决方案1】:

找出导致 Angular 模型更新的事件

document.querySelectorAll('input, select, textarea').forEach(obj => { obj.keyup(); });

尝试模糊、键控、更改。 Angular 将监听一些 DOM 事件处理程序。优化查询选择器中的查询,使其更有针对性地针对您的输入,而不是整个页面。

您是如何填写该字段的?如果你做了类似的事情

document.getElementById('someId').value = 'New Value';

然后尝试在您设置的元素上调用 DOM 事件。

【讨论】:

  • 是的,这就是我设置值的方式。我已经在设置每个字段后立即尝试了 keyup() 和 change() 无效,我将尝试模糊。我会试试你的一揽子解决方案,看看能不能解决。
  • 好的。我无法使用您的代码触发更改事件。 keyup 不是函数。但我可以使用 jquery $('#myFirstField').val("myValue"); $('#myFirstField').blur(); //也试过change()、keydown()、keyup()效果一样——验证码看不到值。所以假设在物理交互发生之前没有设置基础变量
  • 可以通过在angular的ngAfterViewInit生命周期中编写代码来实现。
  • 我无权访问该网站的预编译代码。我正在尝试将我的数据与外部网站集成。
  • 在过去,我会尝试像 $scope.$apply() 这样的东西。实际上,我正在从浏览器调试控制台中寻找一种方法。
猜你喜欢
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
相关资源
最近更新 更多