设置activeIds时,ngb-accordion应用滚动/焦点

时间:2018-12-18 12:29:07

标签: angular accordion ng-bootstrap

我的站点上有很多手风琴,每个手风琴都在*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();
            }
        });
    });
}

0 个答案:

没有答案