微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular:检测页面组件上每个事件的变化

如何解决Angular:检测页面组件上每个事件的变化

我正在 Angular 10 中开发一个应用程序。我创建了一个递归组件,它显示了包含不同输入字段(复选框、单选按钮、文本输入等)的动态“表单”。 这是 my-component 的 HTML 代码一个小例子:

<select [(ngModel)]="valueChosen" name="field" id="field">
        <option *ngFor="let data of datas" [ngValue]="data.code">{{data.text}}</option>

        <div>
              <my-component [datas] = "data">
              </my-component>    
        </div>
</select>

真正的代码要长得多,但我希望给出一个想法:组件本身是通过在输入中传递原始数据的子部分来使用的。这意味着由于它不是“固定形式”(但它是在每次使用时动态创建的),因此我无法将每个输入关联到 component.ts 文件中的特定元素。 我想要一个系统,它允许我检测(使用类似于 AngularJS 中的手表的东西)用户以这种动态形式制作的每一次单击/检查/插入文本。 不幸的是,我无法使用反应式表单,因为它们假定 component.tscomponent.html 之间存在链接

解决方法

如果是动态表单,则使用 Angular 的 Reactive 表单并利用 FormArray 动态添加和删除表单控件。然后订阅表单的 valueChanges 以获取数据更改事件。这也将允许您根据需要添加或清除表单验证器。

此外,您可以在 Form 上为所有其他事件添加一个带有 HostListeners 的指令[事件冒泡将帮助您],例如触摸、点击等。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。