Чтобы перенести фокус на элемент, количество которых определяется в цикле в Angular, вам понадобится взаимодействие с DOM элементами и использование директивы ViewChild
.
1. В шаблоне HTML, внутри цикла, вы должны присвоить каждому элементу уникальный идентификатор с помощью id
<div *ngFor="let item of items; let i = index"> <input type="text" [id]="'item-' + i"> </div>
2. В компоненте TypeScript, добавьте директиву ViewChild
и импортируйте соответствующий модуль:
import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; @Component({ selector: 'app-your-component', template: `...` }) export class YourComponent implements OnInit { @ViewChild('item', { static: false }) itemElement: ElementRef; items = [...]; // ваши данные constructor() { } ngOnInit() { } }
3. В методе ngOnInit()
или в другом месте, где вам нужно перенести фокус на элемент, вы можете использовать nativeElement
свойство ViewChild
, чтобы получить элемент с заданным идентификатором и вызвать метод focus()
:
ngOnInit() { // выберите нужный индекс элемента, на котором нужно установить фокус const index = 0; // например, взять первый элемент const item = document.getElementById('item-' + index); if (item) { item.focus(); } }
Этот код выберет элемент, основываясь на его уникальный id
, и установит на нем фокус. Обратите внимание, что флаг static
в ViewChild
установлен на false
, потому что вы используете ngFor
, и элементы создаются динамически, когда компонент инициализируется. При установке флага static
в true
, ViewChild
будет искать элемент до первоначальной инициализации компонента и это может привести к ошибке, если элемент еще не существует в момент инициализации.
Таким образом, вы можете перенести фокус на элемент, количество которых определяется в цикле в Angular, используя комбинацию шаблона HTML и компонента TypeScript.