включить/отключить контроль формы огни valueChanges Angular 2 Forms

Любые идеи, почему при запуске следующего кода я получаю событие valueChanges управления 'firstName'?

let form: FormGroup = this.createForm();
form.controls['firstName'].enable();

form.controls['firstName'].valueChanges(value=>{
      //some code
});

Поскольку никакое значение не изменилось (только статус), я бы не ожидал, что valueChanges будет вызван здесь, только statusChanged.

Я что-то упускаю?

Ответы

Ответ 1

В основном полная форма отображается на модели, поэтому всякий раз, когда вы включаете/отключите какой-либо элемент управления, свойство модели модели изменяется. И поскольку модель меняется, событие valueChanges будет valueChanges. Я думаю, что это нормально.

Ответ 2

У меня угловая версия 6.0.3

this.form.get('inputName').setValue(newValue, {onlySelf: true, emitEvent: false});

Это работает для меня.

Ответ 3

ValueChange, запускаемая при включении или отключении формы в угловом режиме, является ошибкой в их коде.

Если вы не хотите, чтобы ValueChange запускался при включении или отключении формы, я нашел обходное решение, которое может помочь.

Object.keys(this.toolForm.controls).forEach(key => {
    this.form.controls[key].enable({onlySelf: true, emitEvent: false});
});

Вышеупомянутый код исправляет проблему для меня.

Ответ 4

Не знаю, почему он ведет себя так, как он есть, но вы можете отправить emitEvent: false для включения/выключения без valueChanges.

form.controls['firstName'].enable({ emitEvent: false });