Обновлено для предпочтительного способа Reactive
Благодаря комментарию @Severus я захотел обновить свой ответ, чтобы отразить предпочтительный способ обработки этого в реактивных формах.Мой первоначальный ответ ниже был «быстрый и грязный» способ, но если вы хотите сделать это правильно, вы должны инициализировать myInput
как отключенный при создании формы:
FormControl({ value: '', disabled: true })
, а затем добавить "enabler "на элементе управления переключателя, например:
this.myForm.get('myRadio').valueChanges.subscribe(value => {
const enableOrDisable = value !== null ? 'enable' : 'disable';
this.myForm.get('myInput')[enableOrDisable]();
});
Оригинальный ответ
Примечание. Этот подход все еще действителен при использовании формы на основе шаблона, но его не следует использоватьв методологии реактивной формы. При использовании в шаблонных формах, вы просто должны установить значение «отключено» равным ngModel
, привязанному к переключателю.
Вы должны просто иметь возможность установить отключенное значение назначение зависимого поля.
<input matInput formControlName="myInput" [disabled]="!myForm.value?.myRadio" />
Затем инициализируйте значение вашей myRadio
в вашей форме на null
.Если вместо значений yes
и no
установить значения радиосвязи на true
и false
, вам нужно будет просто проверить значение null
(myForm.value?.myRadio !== null
).