启用/禁用表单控件触发valueChanges Angular 2表单

时间:2017-03-15 11:34:32

标签: angular angular2-forms

为什么在运行以下代码时,我得到了valueChanges 'firstName'let form: FormGroup = this.createForm(); form.controls['firstName'].enable(); form.controls['firstName'].valueChanges(value=>{ //some code }); 控制事件?

valueChanges

由于没有任何价值变化(只是状态),我不希望在此处触发statusChanged,只会if (i == a[i])

我错过了什么吗?

4 个答案:

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

上面的代码为我解决了这个问题。