Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

296
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda