включить/отключить контроль формы огни 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 });