当页面跳转后,再回来,依然是当初跳转过去的描点位置:
.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
}
});
}
缺点: 由于是添加锚点,页面滚动位置也是锚点所在标签,所以不能精确滚到当初页面完全相同位置。都是以该锚点标签置顶为标准滚动。