Есть ли способ обновить контроль после его объявления, как

this.input = new FormControl('', Validators.required)
this.form = this.formBuilder.group({
  input = this.input
})

this.input.update('', Validators.maxlength(20))
5
Jarosław Rewers 24 Апр 2017 в 01:33

2 ответа

Лучший ответ

Вы можете использовать setValidators, если вы хотите установить новые Validator (ы) на более позднем этапе, вы, вероятно, также захотите обновить значение и срок действия, его можно запустить с помощью updateValueAndValidity. Вот простой пример:

this.myForm.controls.input.setValidators([Validators.required, 
                                          Validators.minLength(4)]);

this.myForm.controls.input.updateValueAndValidity();

демонстрация

И если вы хотите обновить значение поля, вы можете, как уже упоминалось, использовать patchValue.

6
AJT82 24 Апр 2017 в 11:52

Вы можете обновить FormControl или FormGroup с помощью метода setValue или метода patchValue. В вашем случае лучше использовать setValue.

Что patchValue делает, если вы хотите обновить свою форму некоторым объектом, и этот объект содержит больше свойств, чем форма (что означает, что некоторые свойства не существуют в форме), с помощью patchValue он получит только те значения, которые существуют на форме, и в этом случае, если вы используете setValue, будет ошибка. Для большего количества вопросов, подобных этому, всегда лучше, если вы используете документацию (которая содержит гораздо больше деталей, чем я могу объяснить здесь)

https://angular.io/docs/ts/latest/api/forms/index/FormControl-class.html

0
Denko Mancheski 23 Апр 2017 в 23:53
43577218