【发布时间】:2018-08-24 02:13:28
【问题描述】:
我有一个包含所有输入的动态创建的表单。我正在订阅更改,但是当控件更改时,我会从所有控件中获取值,所以我真的不知道哪个控件被更改了。是否可以通过 valueChanges 函数仅从更改的控件中获取更改的值?
表单很大,所以不能为每个控件订阅 valueChanges。
函数目前看起来是这样的:
checkForValueChanges() {
this.metadataForm.valueChanges.subscribe(controls => {
// how to get the changed control form name here ?
});
}
由于项目实在是太大了,我只是做了一个简单的例子来说明我的问题: StackBlitz example 您可以在控制台中看到我得到的结果是所有控件,而不仅仅是更改的那个。
【问题讨论】:
-
你能在 StackBlitz 上做一个例子吗?
-
恐怕唯一的方法是将 oldvalues 保存在一个变量中并比较两个对象,(oldValues 和 values - 您在订阅时收到的数据): valueChanges.subscribe(values=>{比较(旧值,值})
-
我是这么认为的,但我真的希望有更好的解决方案,因为我必须根据更改的控件更新一些局部变量。
标签: angular angular-reactive-forms