#html #angular
#HTML #angular
Вопрос:
Я использую Angular для создания своей веб-страницы HTML, и у меня есть элементы HTML, которые семантически считаются элементами / единицами, например, список, созданный *ngFor
тем, где каждый элемент считается элементом / единицей.
<div *ngFor="let foo of foos; ... " [class.selected]="currentSelectedDivIndex == i">
<p>
</p>
</div>
Итак, «единица измерения» — это div
контейнер. Я хотел бы сделать такой элемент «выбираемым», что означает, что он меняет цвет фона, чтобы указать статус выбора. И все это пока работает нормально, используя [class.selected]
в сочетании с проверкой индекса.
Но..
AFAIK только определенные элементы HTML могут быть сфокусированы / выбраны, такие как кнопки, текстовые поля и т.д. Каков общий подход к выбору моих собственных элементов?
В настоящее время я решил это на уровне приложения, прикрепив (click)
событие к этим элементам, которые устанавливают одну из следующих переменных:
currentSelectedDivIndex: number
leftImageIsSelected: boolean;
rightImageIsSelected: boolean;
Но это кажется неправильным. Кстати, есть такая проблема:
- Нажмите на кнопку
- Нажмите на элемент div списка
- Снова нажмите Enter ==> Кнопка запуска
Кнопка все еще была выбрана HTML в фоновом режиме и выполняется снова, хотя я нажал на контейнер div после нажатия кнопки.
Комментарии:
1. onClick set SelectedItem === index из цикла ngFor и проверьте в ngClass, что SelectedItem равен индексу
2. Это мое текущее решение, но является ли это общим / правильным подходом? Кроме того, у вас есть решение моей проблемы с «примечанием»?
3. Да, то, что вы делаете, было бы довольно стандартным способом сделать это для angular
4. Вы также должны добавить <p (click)=»onClick(index)»> {{foo}} </p> в файл .ts onClick(index) { this.SelectedItem = index;