我的站点上有很多手风琴,每个手风琴都在*ngFor
循环中与ngb-accordion组件一起显示。
每个手风琴都有一个元素标识符:id="elem-{{row.id}}"
。
要打开特定的面板,我使用activeIds
,效果很好。但默认情况下,我也不想滚动到该元素。
我在以下组件中尝试了该组件:
this.elementRef.nativeElement.querySelector('#elem-' + this.activeId).scrollIntoView();
并在上面使用.focus()进行了尝试,但没有任何效果。
这是我的组件模板:
<ngb-accordion [closeOthers]="true" activeIds="plan-{{activeId}}">
<ngb-panel *ngFor="let planRow of plan$ | async" title="Spieltag {{planRow.gameday}}" id="plan-{{planRow.gameday}}">
<ng-template ngbPanelContent>
<app-plan-row class="planRow" *ngFor="let row of planRow.rows" [row]="row"></app-plan-row>
</ng-template>
</ngb-panel>
和我的component.ts:
ngOnInit(): {
this.plan$.subscribe(plan => {
plan.forEach(planRow => {
const dateBegin = moment(planRow.dateFrom);
const dateEnds = moment(planRow.dateTo);
if (moment().isBetween(dateBegin, dateEnds)) {
this.activeId = planRow.gameday;
this.elementRef.nativeElement.querySelector('#plan-' + planRow.gameday).scrollIntoView();
}
});
});
}