Solución:
Observable.combineLatest es una solución en esta situación, ¿no es así?
Observable
.combineLatest(
this.route.params,
this.route.queryParams,
(params: any, queryParams: any) => {
return {
id: +params.id,
pageSize: queryParams.pageSize ? +queryParams.pageSize: null
}
})
.subscribe(bothParams => {
this.id = bothParams.id;
this.pageSize = bothParams.pageSize;
});
Supongo que si necesita acceder a ambos al mismo tiempo, la instantánea es una mejor opción.
No probado (solo desde la parte superior de mi cabeza)
ngOnInit() {
this.route
.params
.subscribe(params => {
this.query = params['id'];
this.offset = this.route.snapshot.queryParams['pageSize'];
# find entries this.entryService.findEntries(this.query, this.pageSize);
});
});
}
¿Qué hay de usar un forkJoin?
ForkJoin le permite unir dos observables y esperar la respuesta de ambos. Puede ver la documentación aquí y leer más sobre ella aquí.
En cuanto a su código, se vería así:
ngOnInit() {
Observable.forkJoin(this.route.params, this.route.queryParams).subscribe(bothParams => {
// bothParams is an array, on the first index we have the router.params
// on the second index we have the queryParams
this.query = bothParams[0].query;
this.pageSize = bothParams[0].pageSize;
this.entryService.findEntries(this.query, this.pageSize);
});
}
Es posible que deba agregar importaciones:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/forkJoin';
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)