2017-12-15 23 views
0

クエリパラメータを取得し、APIに登録して結果を返す必要があります。私はcombineLatestを使用してこれを行ったが、それは過度のようだ。私はqueryParamMap以上のものを組み合わせる必要はないので、これを簡略化する方法はありますか?角4/5:二重購読を避ける

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); 
} 
+1

'this.route.queryParamMap.switchMap(combined => ....)subscribe(...)' – martin

答えて

0

確かに、簡単な

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

は、トリックを行う必要があります!

+0

残念ながら私はこれを手に入れましたが、あなたの助けに感謝します。 '(値:ParamMap、index:number)=> ObservableInput <{}>'の型に '(combined:ParamMap)=> void'を代入できません。 タイプ 'ObservableInput <{}>'にタイプ 'void'を割り当てることができません。 – user1496093

+0

うん、ちょうどそれのように、あなたがする必要がある場合はフォーマット: – trichetriche

+0

私はthis.service.getAll()を購読する前に戻っていないためだった。 すべてが修正されました。どうもありがとう。 – user1496093

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

お返事ありがとうございます。

関連する問題