2017-08-14 148 views
2

我正在尝试为查询参数和observables为角度2的web应用程序创建分页。我已经完成了以下代码的工作,但我有一种感觉,嵌入订阅并不是一个好主意。有一个更好的方法吗?正确的方式来处理Angular 2中的嵌套订阅

blogs:any; 
    page = 0; 
    sub; 

    ngOnInit() { 
    this.sub = this.route.queryParams 
     .subscribe(params => { 
      this.page = +params['page'] || 0; 
      this.requestService.getData('posts', '..query string...') 
     .subscribe(data => this.blogs = data.data); 
    }); 
    } 
    nextPage() { 
     this.router.navigate(['./'], { queryParams: { page: this.page + 1 }, relativeTo: this.route } ); 
    } 

回答

2

您可以使用.switchMap链可观察。

ngOnInit() { 
    this.sub = this.route.queryParams 
    .switchMap(params => { 
     this.page = +params['page'] || 0; 
     return this.requestService.getData('posts', '..query string...') 
    }) 
    .subscribe(data => this.blogs = data.data); 
} 
+0

非常感谢。这很好用! –