在 Angular 2 中处理嵌套订阅的正确方法
Proper way to handle nested subscriptions in Angular 2
我正在尝试为 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
链接 observable。
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);
}
我正在尝试为 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
链接 observable。
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);
}