У меня есть FormGroup, которая была создана следующим образом:
form: FormGroup;
constructor(private _formBuilder: FormBuilder) { }
this.form = this._formBuilder.group({
name: ['', Validators.required],
email: ['', Validators.required, Validators.email]
});
Когда происходит событие, я хочу отключить эти входы, поэтому в HTML-коде я добавил:
<input class="form-control" placeholder="Name" name="name" formControlName="name" [(ngModel)]="name" autocomplete="off" [disabled]="isDisabled" required>
<input class="form-control" placeholder="Email" name="email" formControlName="email" [(ngModel)]="email" email="true" autocomplete="off" [disabled]="isDisabled" required>
Где isDisabled
- переменная, которую я переключаю на true
, когда происходит указанное событие.
Как вы можете себе представить, я получаю сообщение:
Похоже, вы используете атрибут disabled с реактивной формой
директивы. Если вы установили отключено на true
когда вы устанавливаете этот элемент управления в своем классе компонентов, атрибут disabled будет фактически установлен в DOM для
вы. Мы рекомендуем использовать этот подход, чтобы избежать ошибок «изменено после проверки».
Example:
form = new FormGroup({
first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),
last: new FormControl('Drew', Validators.required)
});
Итак, на примере этого предупреждения и с небольшим поиском я обнаружил, что должен объявить свои элементы управления следующим образом:
name: [{ value: '', disabled: this.isDisabled }, Validators.required]
Проблема заключается в следующем: Не происходит переключение между отключенным / включенным, когда переменная изменяется между true
/ false
Как правильно использовать переменную, управляющую включением или отключением входа?
Я не хочу делать это вручную (например: this.form.controls['name'].disable()
), потому что это не кажется очень реактивным способом, я должен был бы вызвать его внутри большого количества методов. Вероятно, не очень хорошая практика.
Thx