为什么在运行以下代码时,我得到了valueChanges
'firstName'
个let form: FormGroup = this.createForm();
form.controls['firstName'].enable();
form.controls['firstName'].valueChanges(value=>{
//some code
});
控制事件?
valueChanges
由于没有任何价值变化(只是状态),我不希望在此处触发statusChanged
,只会if (i == a[i])
。
我错过了什么吗?
答案 0 :(得分:14)
基本上完整的表单映射到模型上,因此无论何时启用/禁用任何控件,表单模型的属性都会更改。并且因为模型正在改变,所以将触发valueChanges
事件。我认为这是正常的。
答案 1 :(得分:3)
我有角度版本6.0.3
this.form.get('inputName').setValue(newValue, {onlySelf: true, emitEvent: false});
这对我有用。
答案 2 :(得分:3)
不知道为什么会如此操作,但是您可以发送emitEvent: false
来启用/禁用,而无需触发valueChanges
。
form.controls['firstName'].enable({ emitEvent: false });
答案 3 :(得分:0)
ValueChange
在启用或禁用angular中的表单时被触发是他们代码中的错误。
如果您不希望在启用或禁用表单时触发ValueChange
,
我找到了一种可能会有所帮助的解决方法。
Object.keys(this.toolForm.controls).forEach(key => {
this.form.controls[key].enable({onlySelf: true, emitEvent: false});
});
上面的代码为我解决了这个问题。