Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

283
Views
Extrayendo datos del método subscribe()

Realmente no sé cómo extraer los valores del método subscribe().

 getMessages(): any { this.gatewayMessagesState$.subscribe(data => data.gatewayMessages .get(this.gatewayId) ?.list .map(Message => Message.message)); }

gatewayMessagesState es un estado inicial que contiene algunos datos. gatewayMessages es un mapa con gatewayIds como claves y matrices de objetos Message como valores. El mensaje tiene un campo de mensaje que es solo una cadena. Me gustaría extraer una serie de mensajes para una identificación dada. ¿Cómo puedo hacer eso?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Si desea recuperar los datos como un observable de mensajes como una cadena, puede definir la función de retorno como esta y usar operaciones de tubería y mapa de rxjs, este es el código a continuación es mi propuesta

 getMessages(): observable<string[]>{ return this.gatewayMessagesState$.pipe(map((data) => data.filter((f) => f.gatewayMessages.id ===this.gatewayId)), map(item => item.message)); }
about 4 years ago · Juan Pablo Isaza Report

0

Lo que probablemente quiera hacer es llenar otro Observable con los datos para que pueda acceder a ellos en cualquier otro lugar de su proyecto sin necesidad de llamar a la API más de una vez.
Para hacer esto, crea lo que se conoce como Asunto (en este caso, un Sujeto de Comportamiento) y puede completarlo con datos cuando su llamada API devuelve una respuesta.
Luego, para acceder a estos datos en otro lugar, puede crear una función "obtener" para devolver el Sujeto (que en sí mismo es un Observable) siempre que necesite los datos.
Aquí hay un ejemplo:

mi - data.service.ts

 myData: BehaviorSubject < number > = new BehaviorSubject < number > (0); callApi() { this.dbService.get('apiUrl').subscribe( (data) = > this.myData.next(data) // Assuming data is a 'number' ); } getMyData() { return this.myData.asObservable(); }

Ahora para usar esto en un componente:

 this.myService.getMyData().subscribe( (data) = > { /* Use the value from myData observable freely */ } );

O puede confiar en la tubería asíncrona angular (que es un método muy conveniente para tratar con observables en su código).

about 4 years ago · Juan Pablo Isaza Report

0

No estás especificando si getMessages está en un servicio, componente... en cualquier caso, sugiero devolver el Observable sin suscribirte a él en la función getMessages

 // this function could be anywhere getMessages(): Observable<string[]> { return this.gatewayMessagesState$.pipe( map((data) => data.gatewayMessages.get(this.gatewayId)), map((yourMap) => yourMap?.list.map((theMessage) => theMessage.message)) ); }

Ahora, si necesita extraer este valor, ya sea de un componente, un servicio, etc., simplemente llame a esta función y luego suscríbase para obtener el resultado.

Digamos que getMessages está en un archivo de servicio, por ejemplo

tu componente

 constructor(private theService: YourService) {} anotherFunction() { this.theService.getMessages().subscribe((myMessages) => console.log(myMessages)); }

O deje que la tubería asíncrona se suscriba a este observable

tu componente

 messages$!: Observable<string[]> constructor(private theService: YourService) {} anotherFunction() { this.messages$ = this.theService.getMessages() }

Tu componente html

 <ng-container *ngIf="messages$ | async as messages"> <div *ngFor="let message of messages"> <p>{{ message }}</p> </div> </ng-container>
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!