Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular2 FormGroup-如何确定哪个控件触发了值更改_Angular_Angular2 Forms_Angular2 Formbuilder - Fatal编程技术网

Angular2 FormGroup-如何确定哪个控件触发了值更改

Angular2 FormGroup-如何确定哪个控件触发了值更改,angular,angular2-forms,angular2-formbuilder,Angular,Angular2 Forms,Angular2 Formbuilder,我想在表单发生更改时取消选中复选框。该复选框是该表单的一部分,因此我只想在值更改来自除该复选框之外的任何其他控件时取消选中它 我订阅了一个FormGroup的值,如下所示 import { FormBuilder, FormGroup } from '@angular/forms'; export class App { form : FormGroup; constructor(private formBuilder: FormBuilder) { this.f

我想在表单发生更改时取消选中复选框。该复选框是该表单的一部分,因此我只想在值更改来自除该复选框之外的任何其他控件时取消选中它

我订阅了一个FormGroup的值,如下所示

import { FormBuilder, FormGroup } from '@angular/forms';
export class App {
    form : FormGroup;
    constructor(private formBuilder: FormBuilder) {
        this.form = formBuilder.group({
            firstName: 'Thomas',
            lastName: 'Mann',
            ... many more fields ...
            checkbox: true
        })

        this.form.valueChanges.subscribe(data => {
            //if valueChange was not triggered by change in the checkbox
            this.form.get('checkbox').setValue(false);
        })
    }
}

我可以单独订阅其他每个控件中的值更改,但希望避免这样做

使用嵌套表单组。。。将所有其他formControl分组到要更新其复选框值的单个formGroup中

例如:

从'@angular/forms'导入{FormBuilder,FormGroup};
导出类应用程序{
表格:表格组;
构造函数(专用formBuilder:formBuilder){
this.form=formBuilder.group({
“otherFormField”:this.fb.group({
名字:“托马斯”,
姓:“曼”,
…更多的领域。。。
}),       
复选框:true
})
this.form.otherFormField.valueChanges.subscribe(数据=>{
//如果复选框中的更改未触发valueChange
this.form.get('checkbox').setValue(false);
})
}

应该以任何方式将复选框设置为只读(根据其用途我猜)?否该复选框是您选中的一个复选框,用于确认您输入的所有内容都是真实的。因此,如果您同意,然后返回更改某个字段,我希望取消选中该复选框。这非常有效,谢谢!我会投票支持您,但我没有足够的声誉。非常棒的解决方案!谢谢