Saltar al contenido

La mejor práctica para recuperar parámetros y queryParams en Angular 2

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *