Angular6 从FormGroup angular 6中获取用户使用的值

Angular6 从FormGroup angular 6中获取用户使用的值,angular6,form-control,Angular6,Form Control,我正在建立一个搜索面板和使用的反应形式。我有12个字段的形式(例如:fistName,姓氏,地址……)。formgroup中没有任何字段被指定为“必需”。用户可以输入任意数量的字段进行搜索。是否有任何方法可以用来查找用户输入了多少字段。假设用户只使用了12个字段中的5个进行搜索,我想返回5个。我对每个字段都使用了单一搜索 if (this.searchPanelForm.get('event').value) { //increase the count } 它工作得很好。但我不认为这是解

我正在建立一个搜索面板和使用的反应形式。我有12个字段的形式(例如:fistName,姓氏,地址……)。formgroup中没有任何字段被指定为“必需”。用户可以输入任意数量的字段进行搜索。是否有任何方法可以用来查找用户输入了多少字段。假设用户只使用了12个字段中的5个进行搜索,我想返回5个。我对每个字段都使用了单一搜索

if (this.searchPanelForm.get('event').value) {
  //increase the count
}
它工作得很好。但我不认为这是解决问题的有效方法,每次添加或删除另一个字段时都必须更改代码。有人能提出解决办法吗

我的表单组就是这样的:

public searchPanelForm: FormGroup;
constructor(
    private _fb: FormBuilder
) { }
ngOnInit() {
 this.searchPanelForm = this._fb.group({
  name: [''],
  name1: [''],
  name2: [''],
  name3: [''],
  name4: [''],
  name5: [''],
  name6: [''],
  name7: [''],
  name8: ['']
});
}

谢谢

当您提交表单时,您可以克隆表单值并将其存储在一个变量中,比如说,
oldFormValue
,然后当您需要了解随后输入了多少字段时,您可以比较以前的表单值和新的表单值,如下所示

getNumberOfFieldsChanged(newFormValue, oldFormValue) {
  return Object.keys(oldFormValue)
               .reduce((sum, nextKey) -> {
                 if (oldFormValue[nextKey] !== newFormValue[nextKey])
                   sum++;
                 return sum;
               }, 0);
}
必须克隆表单值并将其分配给
oldFormValue
变量,否则,新值和旧值将引用相同的对象,这将导致上述方法始终返回0