Метод установки значения и обновления срока действия формы управления

Мне интересно, если есть какой-либо метод, чтобы установить значение и обновить достоверность элемента управления формы. Учитывая следующее:

this.updateForm = this._formBuilder.group({
    user: ['',Validators.required]     
});

У меня есть некоторая директива, которая имеет триггер изменения, который вызывает следующее:

changeUserSelection(value){
    this.updateForm.controls['user'].value = value // doesnt trigger validation?
}

И мне интересно, как я могу установить значение и запустить проверку этого поля. Делая это по-моему, не вызывает проверки.

Спасибо

3 ответа

Решение

Вы должны использовать updateValue метод вместо:

changeUserSelection(value){
  this.updateForm.controls['user'].updateValue(value);
}

Обновление до Angular2 final

Согласно окончательному выпуску angular2 updateValue был изменен на setValueпоэтому новый синтаксис должен быть таким

changeUserSelection(value){
  this.updateForm.controls['user'].setValue(value);
}

Для меня setValue, patchValueне справлялись сами. Я сделал следующее для запуска проверки:

form.controls[field].setValue(value);
form.controls[field].markAsTouched();
form.controls[field].markAsDirty();
form.controls[field].updateValueAndValidity();

Таким образом, мои сообщения проверки были запущены правильно. Я пробовал безupdateValueAndValidity но это не сработало.

Вы также можете попробовать patchValue

this.updateForm.patchValue({ user: value });

Ты можешь попробовать this.form.updateValueAndValidity(); для обновления значения и проверки для нескольких элементов управления.

Другие вопросы по тегам