相关疑难解决方法(0)

如何获取 Angular 响应式表单中值发生变化的字段的 FormControlName

我有一个包含超过 10 个表单控件的反应式表单,并使用 valueChanges observable 的订阅来检测更改。它工作完美,但输出始终是整个表单值对象(意味着所有表单控件及其值)。有没有办法简单地获取更改的字段的表单控件名称?

this.form = this.fb.group({
    field1: ['', Validators.required],
    field2: ['', Validators.required],
    field3: ['', Validators.required],
    field4: ['', Validators.required],
    field5: ['', Validators.required],
    field6: ['', Validators.required],
    field7: ['', Validators.required],
    field8: ['', Validators.required],
    field9: ['', Validators.required],
    field10: ['', Validators.required],
    field11: ['', Validators.required],
    field12: ['', Validators.required],
    field13: [{ value: '', disabled: true }, Validators.required]
});

this.form.valueChanges.subscribe(
    result => this.calculateParams(result)
);

calculateParams(result) {
    console.log(result); // giving the entire form.value object
}
Run Code Online (Sandbox Code Playgroud)

javascript rxjs typescript angular

6
推荐指数
1
解决办法
2万
查看次数

Angular 2 Reactive Forms 仅从更改的控件中获取值

我有一个包含所有输入的动态创建的表单。我正在订阅更改,但是当某个控件发生更改时,我会从所有控件中获取值,因此我真的不知道哪个控件发生了更改。是否可以使用 valueChanges 函数仅从更改的控件中获取更改的值?

该表单非常大,因此将每个控件都订阅到 valueChanges 不是一种选择。

该函数目前如下所示:

checkForValueChanges() {
    this.metadataForm.valueChanges.subscribe(controls => {
        // how to get the changed control form name here ?
    });
}
Run Code Online (Sandbox Code Playgroud)

由于项目非常大,我只是做了一个简单的例子来展示我的问题: StackBlitz example 您可以在控制台中看到我得到的结果是所有控件,而不仅仅是更改的控件。

angular angular-reactive-forms

2
推荐指数
1
解决办法
4915
查看次数