以反应形式收听整个FormGroup上的模糊事件

时间:2018-08-30 16:42:02

标签: angular

我正在创建一个大型表单,并且我希望在用户每次退出字段时(模糊时)触发通知并保存数据。问题是我找不到整个FormGroup的该事件的可观察对象。我现在听听价值的变化,但是那总是在散发出来。示例:

this.myForm.valueChanges.subscribe(() => {
    this.saveFormData();
    this.emitSaveNotification();
});

控制器也没有任何监听模糊的方法,因此我无法循环this.myForm.controls为模糊事件添加订阅。

我是否必须分别向每个元素添加事件侦听器?

1 个答案:

答案 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' });