从ViewportScroller在角6使用scrollToAnchor

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从ViewportScroller在角6使用scrollToAnchor相关的知识,希望对你有一定的参考价值。

我无法弄清楚如何使用功能ViewportScroller.scrollToAnchor(string anchor)

首先是 - 我怎么定义我的html锚?我可能会产生混淆锚,routerlinks和片段。

我的代码是基于碎片截至目前:

export class ItemsOverviewPage implements OnInit 
    public items: Item[];

    constructor(private route: ActivatedRoute,
                private scroller: ViewportScroller) 

    public async ngOnInit(): Promise<void> 
        const fragment = await this.route.fragment.first().toPromise();
        if (fragment !== undefined || fragment !== null) 
            this.scroller.scrollToAnchor(fragment);
        
    

在HTML是一样的东西

<ion-card mode="md"
    *ngFor="let i of items"
    routerDirection="forward"
    id=" i.title) ">
</ion-card>

我怎样才能参考ID?或者我应该做的身边任何我想要滚动到<a>...</a>

我要前往的页面,如:

this.router.navigate(['/items'],  fragment: item.title );
答案

我不认为你可以这样做的。看来,当你使用的是ngFor,滚动到锚的DOM完成之前被调用。所以,在你ngOnInit你可以得到的片段,但将无法找到锚,因为ngFor尚未完成。

一种方法的方式做你想做的,可能是使用路由参数,而不是一个fragment.You可以检索你的ItemsOverviewPageComponent的ngOnInit参数,并将其存储在一个变量(例如_fragment),然后滚动到锚使用的document.getElementById(this._fragment))的ngAfterViewInit()钩.scrollIntoView(; 另一种选择,可以使用navigationExtras。

更妙的是,如果你需要通过路由通过数据和潜在的复杂对象,将设置存储数据服务,然后将其注入到组件

欲了解更多信息,请参阅ActivatedRouteNavigationExtras

以上是关于从ViewportScroller在角6使用scrollToAnchor的主要内容,如果未能解决你的问题,请参考以下文章

typescript 使用指令将控制集中在角4 #angular

OSGi 纲要 (R6) 注释 + Felix SCR 2.0.0 + Karaf 3.0.6

我怎样才能在角4中使用点击

防止在角材料设计中自动填充保存的密码

如何在角材料中使用 css 更改 md-input-container 占位符颜色?

支付成功后如何调用函数?在角