Я пытаюсь использовать логическое значение, чтобы определить, проверена ли переключатель в форме или нет.
(я пропустил ненужный код для файлов HTML и TS)
HTML:
<mat-radio-button (change)="toggleEditable($event)" value="overdraft">Overdraft</mat-radio-button>
TypeScript:
overdraft = false;
toggleEditable(event) {
if ( event.target.checked ) {
this.overdraft = true;
}
}
Событие не запускается, потому что, когда я пытаюсь щелкнуть переключатель и отправить форму, overdraft
не установлен в true. ОДНАКО , если я использую событие (click)
вместо (change)
, оно работает нормально, события НО (click)
имеют тот недостаток, что вам нужно дважды щелкнуть радио-кнопки для отображения визуального выделения, и поэтому я чувствую необходимость использовать (change)
(подробнее здесь: mat-checkbox не проверяет, является ли условие ложным (только при двойном щелчке) ).
Как мне решить эту проблему, чтобы при щелчке переключателя у меня происходило событие (change)
и для overdraft
устанавливалось значение true без использования событий (click)
, которые поставляются с пользовательским интерфейсом-issues?
РЕШЕНИЕ :
Если вы хотите получить фактическое значение mat-radio-button
, вам потребуется внести следующие изменения:
1) Вместо использования [value]="overdraft"
в HTML используйте value
без квадратных скобок, например: <mat-radio-button value="overdraft">Overdraft</mat-radio-button>
2) Теперь в коде TypeScript вы можете получить доступ к свойству значения из HTML:
valueChanged(event: MatRadioChange) {
console.log(event.value); //will log the value for the button you clicked
}