#javascript #html #angular
#javascript #HTML #angular
Вопрос:
«Единственная опция содержит директивы события *ngFor и (click). * Цикл ngFor выполняет итерацию объекта с использованием канала keyvalue.Выпадающие параметры отображаются нормально, но это не вызывает функцию, когда я нажимаю на эти параметры в Chrome, но работает в Firefox.
subjects = {
'cse': 'Computer Science',
'eee': 'electrical and electronics engineering',
};
getSub(sub) {
console.log(sub);
}
<select>
<option *ngFor="let item of subjects | keyvalue" (click)="getSub(item.key)">{{item.value}}</option>
</select>
Expected: I just expect to execute the getSub() function.
Комментарии:
1. Попробуйте удалить
| keyvalue
, а также использовать окончание"
послеsubjects
и протестируйте еще раз!
Ответ №1:
Используйте событие изменения вместо события щелчка и подписывайтесь на элемент выбора, а не на опцию
<select (change)="getSub($event.target.value)">
<option>Not Selected</option>
<option *ngFor="let item of subjects | keyvalue" [value]="item.key" >
{{item.value}}
</option>
</select>
Комментарии:
1. Работает нормально. Большое спасибо вам, особенно за демонстрацию stackblitz. Я только что заметил эту работу и действительно.. это действительно полезно.
Ответ №2:
Похоже, вы забыли заключительные кавычки после *ngFor и перед вашим атрибутом события (click).
<select>
<option *ngFor="let item of subjects | keyvalue" (click)="getSub(item.key)">{{item.value}}</option>
</select>
Комментарии:
1. извините, сэр, я только что переписал коды. Вот почему я допустил ошибку. И этот код полностью работает в Firefox. Спасибо, сэр.