Я использую Angular 2 (TypeScript).
Я хочу сделать что-то с новым выбором, но то, что я получаю, onChange()
это всегда последний выбор. Как я могу получить новый выбор?
<select [(ngModel)]="selectedDevice" (change)="onChange($event)">
<option *ngFor="#i of devices">{{i}}</option>
</select>
onChange($event) {
console.log(this.selectedDevice);
// I want to do something here with the new selectedDevice, but what I
// get here is always the last selection, not the one I just selected.
}
angular
typescript
Хунбо Мяо
источник
источник
selectedDevice
когда пользователь выбирает другой элемент, и 2) если мы устанавливаем значениеselectedDevice
, NgModel автоматически обновляет представление. Поскольку мы также хотим получать уведомления об изменениях, я добавил(change)
привязку к событию. Нам не нужно делать это таким образом ... мы должны иметь возможность разбить двустороннее связывание данных[ngModel]="selectedDevice" and (ngModelChange)="onChange($event)"
, но, как я выяснил,onChange()
два раза вызывается для каждого изменения списка выбора таким образом.<option *ngFor="#course of course_array #i=index" #newone value={{course.id}} >{{course.course_name}}</option>
course.course_name
иcourse.id
оба, как я могу отправить эти два через (изменить) функцию?$event
переменная / символ является частью «контекста оператора», который есть в шаблонах Angular. Если бы вместо этого я написал,(ngModelChange)="onChange('abc')"
тоnewValue
получил бы строкуabc
. Это просто обычный вызов функции JavaScript.Вы можете передать значение обратно в компонент, создав ссылочную переменную в теге select
#device
и передав его в обработчик изменений, которыйonChange($event, device.value)
должен иметь новое значениеисточник
ngModel
, вы привязываетесь к новой переменной с именемdevice
.[(ngModel)]
здесь происходитПросто используйте [ngValue] вместо [value] !!
источник
(change)="selectOrg(selectedOrg)"
вызывает функцию selectOrg с текущим / предыдущим выбором, а не вновь выбранный вариант. Я понял, мне даже не нужно(change)
немного.Я столкнулся с этой проблемой при выполнении учебного курса по Angular 2 (версия TypeScript) в https://angular.io/docs/ts/latest/guide/forms.html.
Блок выбора / опции не позволял изменить значение выбора, выбрав один из вариантов.
Делать то, что предложил Марк Райкок, сработало, хотя мне интересно, есть ли что-то, что я пропустил в оригинальном уроке или было обновление. В любом случае добавление
на hero-form.component.ts в классе HeroFormComponent
а также
to hero-form.component.html в
<select>
элементе заставил его работатьисточник
используйте selectionChange в угловых 6 и выше. пример
(selectionChange)= onChange($event.value)
источник
Другой вариант - сохранить объект в значении в виде строки:
составная часть:
Это был единственный способ получить двухстороннюю привязку, чтобы установить значение select при загрузке страницы. Это произошло потому, что мой список, который заполняет поле выбора, не был точно таким же объектом, с которым был связан мой выбор, и должен быть тем же объектом, а не просто значениями свойств.
источник
Я использовал это для раскрытия углового материала. работает отлично
источник
последние ионные 3.2.0 были изменены (изменить) на (ionChange)
например: HTML
TS
источник
Угловой 7/8
Начиная с углового 6, использование свойства ввода ngModel с директивой реактивных форм устарело и полностью удалено в угловом 7+. Читайте официальный документ здесь.
Используя подход реактивной формы, вы можете получить / установить выбранные данные как;
источник
В Angular 5 я поступил следующим образом. получить объект $ event.value вместо $ event.target.value
источник
В Angular 8 вы можете просто использовать «selectionChange» следующим образом:
источник