我正在创建一个大型表单,并且我希望在用户每次退出字段时(模糊时)触发通知并保存数据。问题是我找不到整个FormGroup的该事件的可观察对象。我现在听听价值的变化,但是那总是在散发出来。示例:
this.myForm.valueChanges.subscribe(() => {
this.saveFormData();
this.emitSaveNotification();
});
控制器也没有任何监听模糊的方法,因此我无法循环this.myForm.controls
为模糊事件添加订阅。
我是否必须分别向每个元素添加事件侦听器?
答案 0 :(得分:4)
一种解决方案可能是在选项上添加{updateOn:'blur'}
<form [ngFormOptions]="{updateOn: 'blur'}">
这将使值更改仅在用户模糊输入时才触发,而不是在每次更改时都触发,将其与代码一起使用应该有效
this.myForm.valueChanges.subscribe(() => {
this.saveFormData();
this.emitSaveNotification();
});
编辑1 如果您使用模型驱动的表单,还可以在FormGroup创建中添加updateOn选项:
this.nameForm = new FormGroup ({
onecontrol: new FormControl('', ),
othercontrol: new FormControl('', )
}, { updateOn: 'blur' });