javascript - 从常规 JavaScript 触发角度元素事件
问题描述
我正在尝试自动填充使用 Angular 编写的页面,我将其加载到我的应用程序的 web 视图中。
页面中有一个元素,其语法如下:
<input id="element" ng-model="model" ng-blur="onInput('input')">
现在,我通过注入 JS 将数据从我的应用程序填充到字段中。
document.getElementById("element").value = "myvalue"
但是,ng-blur 事件没有触发。如果我在它触发的字段中手动输入数据。如何触发 ng-blur 事件?
我试过onblur
在元素上调用常规处理程序,但它是null
. 还尝试过这样的评估:
let elem = document.getElementById("element")
eval(elem.attributes["ng-blur"])
但这也失败了,因为范围错误。如何从常规 JavaScript 触发角度事件?
解决方案
当元素失去焦点时会触发模糊,因此当您单击外部时。更改输入的值不会触发此事件。
在这里,您可以像这样使用 ngModelChange:
<input id="element" [(ngModel)]="model" (ngModelChange)="onInput($event)">
ngModelChange 非常明确,当 ngModel 值更改时会触发它
此外,我不确定使用不带括号和括号的 ngModel 是否有效,但也许这是我不知道的语法。
最后一件事:在角度中,您可以使用“ViewChild”获得元素
只需像这样对元素进行引用:
<input id="element" #someInput [(ngModel)]="model" (ngModelChange)="onInput($event)">
然后在您的打字稿中,您需要导入 ViewChild
import {Component,ViewChild} from '@angular/core';
并像这样使用它:
export class AppComponent implements AfterViewInit {
@ViewChild('someInput') someInput: Any;
ngAfterViewInit() {
this.someInput.value = 'Hey';
}
}
推荐阅读
- javascript - Chrome 扩展清单 V3 如何读取我的用户正在查看的网页的 HTML 和文本内容
- python - 重音数据被损坏
- python - sunpy中无法导入光曲线
- javascript - 当类在javascript中转到另一个类时从元素中删除类
- node.js - NextJS - 生产中打开的文件过多错误
- c# - 为什么 char.GetNumericValue() 给出错误的结果?
- r - 如何计算日期之间的差异,日期在 R 包 dplyr 的 1 列中?
- regex - Elasticsearch 通配符、正则表达式、match_phrase、前缀查询返回错误结果
- flutter - 无法在颤动中正确显示列表
- java - H2 找不到适合 jdbc:h2:mem 的驱动程序: