2017-12-15 12 views
0

Ich muss einen Abfrageparameter erfassen und dann eine API abonnieren, um Ergebnisse zurückzugeben. Ich habe dies mit Hilfe von CombineLatest getan, aber es scheint übertrieben. Gibt es eine Möglichkeit, dies zu vereinfachen, da ich nicht mehr als queryParamMap kombinieren muss?Angular 4/5: Doppelanmeldung vermeiden

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 (kombiniert => ....). Subscribe (...)' – martin

Antwort

0

Sicher, ein einfaches

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

sollte es tun!

+0

Leider bekomme ich das, aber danke für Ihre Hilfe. type '(kombiniert: ParamMap) => void' ist keinem Parameter des Typs '(Wert: ParamMap, Index: Nummer) => ObservableInput <{}>' zuweisbar. Typ 'void' ist nicht dem Typ 'ObservableInput <{}>' zuweisbar. – user1496093

+0

Yup, genau wie es, aber formatiert, wenn Sie müssen :) – trichetriche

+0

Es war, weil ich this.service.getAll() nicht zurückgab, bevor ich es abonnierte. Alle behoben. Danke vielmals. – user1496093

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

Danke für die Antworten.

Verwandte Themen