Я хочу использовать радиокнопку в форме с использованием Angular 2
Options : <br/>
1 : <input name="options" ng-control="options" type="radio" value="1" [(ng-model)]="model.options" ><br/>
2 : <input name="options" ng-control="options" type="radio" value="2" [(ng-model)]="model.options" ><br/>
Начальное значение model.options равно 1
когда страница загружена, первая радиокнопка не проверяется, и модификации не привязаны к модели
Любая идея ?
forms
radio-button
angular
Мурад Зуаби
источник
источник
Ответы:
используйте [value] = "1" вместо value = "1"
Редактировать:
Как было предложено thllbrg "Для использования angular 2.1+
[(ngModel)]
вместо[(ng-model)]
"источник
[(ngModel)]
вместо[(ng-model)]
. Прочтите еще раз .value="1" [(ngModel)]="model.options"
. Заключениеvalue
в квадратные скобки неПримечание. Привязка радиокнопок теперь поддерживается в версии RC4 и далее - см. Этот ответ.
Пример радиокнопки с использованием настраиваемого RadioControlValueAccessor, аналогичного CheckboxControlValueAccessor ( обновлен с помощью Angular 2 rc-1 )
App.ts
template.html
radio_value_accessor.ts
Источник: https://github.com/angular2-school/angular2-radio-button
Живая демонстрация Plunker: http://plnkr.co/edit/aggee6An1iHfwsqGoE3q?p=preview
источник
this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', value == this._elementRef.nativeElement.value);
Мой ручной обходной путь, который включает обновление вручную
model.options
при выборе нового переключателя:Это Plunkerдемонстрирует вышеизложенное, а также то, как использовать кнопку для изменения выбранной радиокнопки, то есть, чтобы доказать, что привязка данных является двусторонней:
источник
get debug()
функции чтоget
означает? во-вторых: есть ли альтернативный ответ для флажков? пожалуйста, укажите также код для флажков. спасибо +1 за отличный ответ.get
- это функция доступа TypeScript . Задайте вопрос для флажков.Anotherdate('2015-05-18T02:30:56')
работать не будет. Сеттеры вызываются, когда вы пытаетесь присвоить значение свойству. В моем плункере я создалsetDate()
функцию, которая принимает новое значение даты, которое затем присваиваетсяAnotherdate
. Это назначение автоматически вызовет сеттер.{{}}
привязки переоцениваются каждый цикл обнаружения изменений. Я реализовалngDoCheck()
в AppComponent плункер для подсчета циклов обнаружения изменений. Из этого мы видим, что обнаружение изменений вызывается 3 раза. В режиме разработки привязки проверяются дважды , то есть 6 раз.Вот лучший способ использовать переключатели в Angular2. Нет необходимости использовать событие (щелчок) или RadioControlValueAccessor для изменения значения связанного свойства, установка свойства [checked] делает свое дело.
Я опубликовал пример использования переключателей: Angular 2: как создать переключатели из перечисления и добавить двустороннюю привязку? Работает как минимум с Angular 2 RC5.
источник
Эта проблема решена в версии Angular 2.0.0-rc.4 соответственно в формах.
Включите
"@angular/forms": "0.2.0"
в package.json.Затем расширите свой загрузочный файл в main. Соответствующая часть:
У меня есть это в .html, и он отлично работает: value: {{buildTool}}
источник
disableDeprecatedForms
иprovideForms
выглядит волшебной и не имеет никакого смысла. Что они делают? Это избыточный нечитаемый код, создающий непредсказуемые вещи неизвестного масштаба.Я искал правильный метод для работы с этими переключателями, вот пример решения, которое я нашел здесь:
Обратите внимание на onSelectionChange, который передает текущий элемент методу.
источник
Радиовход, похоже, пока не поддерживается. Там должно быть входное значение радио сбруя (аналогично CheckBox в одном , где он устанавливает «проверил» атр здесь ) , но я не нашел. Итак, я реализовал один; Вы можете проверить это здесь .
источник
[value] = "item" с использованием * ngFor также работает с реактивными формами в Angular 2 и 4
источник
Следующее исправило мою проблему, рассмотрите возможность добавления радио ввода внутри
form
тега и используйте[value]
тег для отображения значения.источник
Вот решение, которое мне подходит. Он включает привязку радиокнопки, но не привязку к бизнес-данным, а привязку к состоянию радиокнопки. Возможно, это НЕ лучшее решение для новых проектов, но подходит для моего проекта. В моем проекте есть масса существующего кода, написанного с использованием другой технологии, которую я переношу на Angular. Старый код следует шаблону, в котором код очень заинтересован в изучении каждого переключателя, чтобы убедиться, что он выбран. Решение представляет собой разновидность решений для обработчиков кликов, некоторые из которых уже упоминались в Stack Overflow. Добавленная стоимость этого решения может быть:
Это решение включает
Пример:
...
...
Когда пользователь щелкает переключатель, вызывается метод selectButton вспомогательного класса. Передается модель для выбранного переключателя. Вспомогательный класс устанавливает для логического поля «selected» переданной модели значение true, а для поля «selected» всех других моделей переключателей - значение false.
Во время инициализации компонент должен создать экземпляр вспомогательного класса со списком всех моделей переключателей в группе. В этом примере «radioButtonGroupList» будет экземпляром вспомогательного класса, код которого:
источник
Пример листинга Angular 8 Radio:
Ссылка на источник
Ответ JSON
HTML-шаблон
источник
Самое простое решение и обходной путь:
источник
Я создал версию, используя только событие щелчка на загруженных элементах, передав значение выбора в функцию getSelection и обновив модель.
В вашем шаблоне:
Твой класс:
См. Пример: https://plnkr.co/edit/2Muje8yvWZVL9OXqG0pW?p=info
источник
Хотя этот ответ может быть не лучшим в зависимости от вашего варианта использования, он работает. Вместо использования радиокнопки для выбора мужского и женского пола, использование
<select> </select>
отлично работает как для сохранения, так и для редактирования.Вышеупомянутое должно работать нормально для редактирования с использованием FormGroup с
patchValue
. Для создания вы можете использовать[(ngModel)]
вместоformControlName
. До сих пор работает.Сантехнические работы, связанные с первым переключателем, я предпочел выбрать. Визуально и с точки зрения UX это не кажется лучшим, но с точки зрения разработчика это намного проще.
источник
При изменении радиокнопки получить значение соответствующих кнопок с этими строками
https://stackblitz.com/edit/angular-jpo2dm?embed=1&file=src/app/app.component.html
источник
Вот код, который я использую, который работает с Angular 7
(Примечание: в прошлом я иногда использовал информацию, предоставленную ответом Энтони Бренельера, что я ценю. Но, по крайней мере, для Angular 7, эта часть:
Я счел ненужным.)
У моего решения здесь три преимущества:
Пример HTML:
Пример TypeScript:
Используются два класса:
Класс группы радиокнопок:
Класс радиокнопки
источник
Это может быть неправильное решение, но это тоже вариант, надеюсь, он кому-то поможет.
До сих пор я получал значение radioButtons, используя метод (щелчок), как показано ниже:
и в файле .ts я установил значение предопределенной переменной для получения значения
onChange
функции.Но после поиска я нашел хороший метод, который я еще не пробовал, но, похоже, он хорош, используя
[(ng-model)]
ссылку здесь на github здесь . это также используетсяRadioControlValueAccessor
для радио, а также для флажка. вот рабочий # plnkr # для этого метода здесь .источник