正确的方式来处理Angular 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 } );
}
答
您可以使用.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);
}
非常感谢。这很好用! –