我的要求是,在路由更改时,用户应该始终导航到页面的顶部。因此,我尝试按照3.2.0中的新应用程序结构在AppRoutingModule中应用scrollPositionRestoration: 'top'配置,但它不起作用。
我也尝试过scrollOffset: [0, 0],property。但这也行不通。
我也试过按照Spartacus documentation做下面的操作,但也不起作用。
providers: [
{
provide: ROUTER_CONFIGURATION,
useValue: {
scrollPositionRestoration: 'top',
},
},
];有人能帮我解决这个问题吗?
发布于 2021-10-08 18:08:33
从3.2.x开始,由于新的应用程序结构,Spartacus不提供来自angular/router的RouterModule机制。除非您选择在默认情况下在app.module中导入AppRoutingModule的外壳应用程序上创建带有schematics的Spartacus,否则您将能够使用您提供的代码片段。由于它不工作,我假设,您没有创建AppRoutingModule并将其导入到您的AppModule中,因此没有angular的路由器滚动机制。从您在3.0中提供的文档来看,并没有说您需要创建自己的AppRoutingModule,在4.0 docs发布时,我们的文档中已经正确更新了该文档
对于4.2.0,我们发布了一个自定义的滚动位置恢复机制,在这个机制中,您可以控制忽略路由和查询字符串,使其不会返回页面顶部。由于Spartacus异步加载其数据,因此您将拥有一个功能滚动定位,而它不能与开箱即用路由器的滚动位置恢复一起工作。
您可以从@spartacus/storefront导入AppRoutingModule,而不是创建自己的AppRoutingModule。它的文档将在4.2发布后发布。
发布于 2021-04-29 23:58:48
您尝试过在app-routing.module.ts中添加scrollPositionRestoration: 'top'吗
这是app-routing.module.ts的开箱即用的Spartacus(3.2.1)示例
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
@NgModule({
declarations: [],
imports: [
RouterModule.forRoot([], {
anchorScrolling: 'enabled',
relativeLinkResolution: 'corrected',
initialNavigation: 'enabled',
scrollPositionRestoration: 'top',
}),
],
})
export class AppRoutingModule {}https://stackoverflow.com/questions/67314140
复制相似问题