如何使用Angular材质分页器中的浏览器后退按钮进行分页?

时间:2019-03-24 19:45:41

标签: javascript angular typescript angular-material angular-router

尝试执行以下操作:

    用户已通过浏览器后退按钮 IF 上的
  • 分页数据进行了分页本身,即this.currentPage >0

目前我尝试过的是

ngOnInit(): void {
 this.location.onPopState((event)=>{
  if(this.currentPage >0){
    window.history.go(0);

    event.preventDefault(); //not stoping the event

    this.currentPage = this.currentPage -1;
    if (this.currentPage * this.pageSize >= this.placements.length - this.pageSize) {
      this.loadMorePlacements();
    }
    this.updatePaginator();
    this.updateStorePaginator();

  }
 });
}

问题是事件没有停止并且应用程序被带到了先前的路由。

是否可以停止事件并仅对数据进行分页?任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您可以更改分页器的逻辑吗?

如果是,则可以将页码放在路由中,并使用该路由对数据进行分页,这样就不需要监听器浏览器事件。

示例(路由):

navigation-ui-ktx

ExampleComponent

{ path: 'list/:page',      component: ExampleComponent },

更改页面的btn:

constructor(private route:ActivatedRoute){}
ngOnInit(){
   this.route.params.subscribe( params => {
      this.currentPage = params['page'];
      this.updatePaginator();
      this.updateStorePaginator();
   });
}

要通过更改分页器来更新路径,您可以这样做

<a routerLink="/list/5">Page 5</a>