Angular 4/5:避免双重订阅

时间:2017-12-15 09:38:19

标签: angular rxjs

我需要捕获一个查询参数,然后订阅一个API来返回结果。我使用combineLatest完成了这个,但它似乎有点矫枉过正。有没有办法简化这个,因为我不需要组合多个queryParamMap?

ngOnInit() {
  Observable.combineLatest([
    this.route.queryParamMap
  ])
  .switchMap(combined => {
    let page = combined[0].get('page');

    return this.service.getAll(); //{ page: page}
  })
  .subscribe(results => this.results = results.results);
}

2 个答案:

答案 0 :(得分:1)

this.route.queryParamMap
  .switchMap(combined => {
  let page = +combined.get('page');
  return this.service.getAll()
})
.subscribe(
  results => this.results = results.results
);

感谢您的回复。

答案 1 :(得分:0)

当然,一个简单的

this.route.paramMap.switchMap((params: ParamMap) => {
  let page = +params.id.get('page');
  this.service.getAll().subscribe(x => { /* ... */);
});

应该做的伎俩!