首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ScrollIntoView()与routerLinkActive和ngFor

ScrollIntoView()与routerLinkActive和ngFor
EN

Stack Overflow用户
提问于 2019-10-18 14:22:49
回答 1查看 392关注 0票数 1

我有routerLinkActive的列表:

代码语言:javascript
复制
<div *ngFor="let experimentType of experimentTypeList">
  <a class="d-flex align-items-center experiemnt-link-button selectable-item"
     [routerLink]="getScenarioExperimentTypeLink(experimentType)"
     routerLinkActive="link-button-selected">
     {{ experimentType.name }}
  </a>
</div>

当其中一个链接被激活时,我希望将其滚动到视图中(通过scrollIntoView())。

我可以手动完成:

代码语言:javascript
复制
<div (click)="scroll()">scroll()</div>

  public scroll(): void {
    this.elementRef.nativeElement.querySelector('.link-button-selected').scrollIntoView()
  }

但我不明白怎么用编程的方式。

我试过:

  1. AfterViewInit,OnChanges
  2. 侦听@ViewChildren('rla')上的更改,
  3. Listen this.router.events

上的更改

毫无办法。它是在指令添加类之前触发的。

EN

回答 1

Stack Overflow用户

发布于 2019-10-18 15:49:53

在html中,您可以这样做(我添加了#somethingToTarget):

代码语言:javascript
复制
<a class="d-flex align-items-center experiemnt-link-button selectable-item"
 #somethingToTarget
 [routerLink]="getScenarioExperimentTypeLink(experimentType)"
 routerLinkActive="link-button-selected">
 {{ experimentType.name }}
</a>

在组件代码中:

代码语言:javascript
复制
@ViewChild('somethingToTarget') somethingToTarget: ElementRef;

在你可以打电话之后:

代码语言:javascript
复制
this. somethingToTarget.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58452802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档