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