Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

317
Vistas
Angular: Mantener el valor anterior del observable

Estoy enviando una solicitud HTTP a un servidor y recibiendo los datos. Paso los datos a través de un flujo observable y los suscribo directamente en mi plantilla HTML usando una canalización asíncrona. Sin embargo, tengo un problema. Dado que quiero enviar múltiples solicitudes con el clic del botón una y otra vez, quiero que el observable siga agregando los nuevos valores al flujo de datos en lugar de reemplazar por completo los anteriores. ¿Cómo puedo hacer eso?

Aquí está mi código:

TS

 productsData$ = this.productService.getProduct(this.payload); loadMore() { .... this.productsData$ = this.productService.getProduct(updatedpayload); }

HTML

 <div class = "grid" *ngIf="productsData$ | async as productsData"> <div class="p-col-12 p-md-6 p-lg-3" *ngFor = "let pData of productsData; let i = index"> ...

¿Cómo puedo conservar los valores anteriores en el flujo observable mientras envío una solicitud HTTP y agrego los nuevos a los existentes?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Estoy de acuerdo con los comentarios. Puede crear una matriz de caché y aprovecharla para devolver también los valores anteriores.

 private readonly previousProductsData = []; readonly buttonTrigger$ = new BehaviourSubject(''); productsData$ = this.buttonTrigger$.pipe( switchMap(()=> this.productService.getProduct(this.payload)), tap((product)=> { this.previousProductsData.push(product) }), map(()=> this.previousProductsData) );

y el clic del botón podría verse así:

 loadMore() { .... this.productService.buttonTrigger$.next(''); }
over 4 years ago · Santiago Trujillo Denunciar

0

Intentacombinar desde rxjs

 productsData$ = this.productService.getProduct(this.payload); loadMore(){ .... this.productsData$ = merge(this.productsData$, this.productService.getProduct(updatedpayload)); }
over 4 years ago · Santiago Trujillo Denunciar

0

empuje la respuesta a una matriz y utilícela para mostrar

 this.productsData$ = this.productService.getProduct(updatedpayload); this.productArray.push(this.productsData$);

Y muestra productArray

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda