Если вам нужно программно инициировать щелчок по init (при условии, что вам нужно событие реального щелчка, которое также будет включать распространение , в противном случае вы можете просто вызвать событие click), вы можете сделать это, используя ViewChildren
и NgAfterViewInit
.
По сути, вы можете использовать селектор для получения всех элементов <li>
:
<ul>
<li #items class="list" *ngFor="let ver of versions;" (click)="versionView(ver)">{{ver.name}}</li>
</ul>
(обратите внимание на селектор #items).
В вашем компоненте вы можете объявить селектор, нацеленный на «элементы»: @ViewChildren('items') liItems: QueryList<ElementRef>
.
После этого вы можете перебирать элементы после того, как представление будет готово, и инициировать щелчок по собственному HTML-элементу:
public ngAfterViewInit() {
const targetItem = 10;
// If the item is the 10th element, click it.
this.liItems.forEach((item, index) => {
if (index === (targetItem - 1)) (item.nativeElement as HTMLElement).click();
});
}
Пример полного кода компонента:
import { Component, ViewChildren, QueryList, ElementRef } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
@ViewChildren('items') liItems: QueryList<ElementRef>
public versions: { name: string }[];
public constructor() {
this.versions = Array.from({length: 10}).map((_, i) => {
return { name: i.toString() };
});
}
public versionView(i: {name: string}) {
console.log('clicked item: ', i);
}
public ngAfterViewInit() {
const targetItem = 10;
// If the item is the 10th element, click it.
this.liItems.forEach((item, index) => {
if (index === (targetItem - 1)) (item.nativeElement as HTMLElement).click();
});
}
}
Рабочий стек стека: https://stackblitz.com/edit/angular-1eha8j
(проверьте консоль, чтобы убедиться, что щелкнул элемент 10)
Осторожно: в приведенном выше примере я использовал forEach для зацикливания элементов, но вы можете просто получить нужный вам элемент, используя .find
или просто получив элемент по определенному индексу.Приведенный выше пример просто показывает, что многие манипуляции возможны с помощью селекторов.