2017-08-14 61 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

非常感謝。這很好用! –