angular路由添加锚点

本文介绍了在Angular应用中如何使用路由添加锚点,以实现在页面跳转后能返回到之前的位置。虽然这种方法可以让页面定位到特定的锚点标签,但存在一个问题:它无法精确滚动到原先的页面位置,而是以锚点标签顶部作为滚动基准。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当页面跳转后,再回来,依然是当初跳转过去的描点位置:

.html文件:在要跳转去其他页面标签上绑定点击事件,传参包括该标签上的id绑定值:

<li class="search-result-item" *ngFor="let item of lowyerList;index as i" [id]="'item' + i">
    <a (click)="goDetail(item.id, 'lawyer' + i)">item</a>
</li>

 .ts文件 引入路由对象并实例化:

import { ActivatedRoute, Router, NavigationEnd } from '@angular/router';

export class Change implements OnInit {

  constructor(private route: ActivatedRoute,
    private router: Router) { }
  ngOnInit() { }
}

 实现绑定事件

  // 跳转链接
  goDetail(id: string, fragment: string) {
    this.router.events.subscribe(s => {
      if (s instanceof NavigationEnd) {
        const tree = this.router.parseUrl(this.router.url);
        // 点击时为本地址添加锚点
        tree['fragment'] = fragment;
        if (tree.fragment) {
             // 获取锚点标签
          const element = document.querySelector('#' + tree.fragment);
          // 滚动到锚点位置
          if (element) { element.scrollIntoView(true); }
        }
      }
    });
    // 路由跳转
    this.router.navigate(['***'], {
      queryParams: {
        id: id
      }
    });
  }

 

缺点: 由于是添加锚点,页面滚动位置也是锚点所在标签,所以不能精确滚到当初页面完全相同位置。都是以该锚点标签置顶为标准滚动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值