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

62
Visualizações
Suscripción a Observable en servicio desde componente

He buscado durante bastante tiempo para entender cómo suscribirme a una matriz cuyos valores se actualizan constantemente.

Necesito entender cómo configurar mi servicio Angular 2+ observable correctamente y suscribirme correctamente en mi componente. Suponga que todas las demás partes del código funcionan correctamente.

 @Injectable() export class AutocompleteService { searchTerm: string; results = []; observe$ = Observable.from(this.results); searchTest(term){ this.searchTerm = term.toLowerCase(); if(this.searchTerm.length > 2){ this.recruiters.forEach(function(el){ if(el.name.toLowerCase().indexOf(term) != -1) { this.results.push(el); } }); } } getCurrentResults():Observable<Object> { return this.observe$; }

Todo en el servicio funciona como se esperaba. Si registro el term , obtengo la entrada del usuario de mi componente. O la matriz de results después de que se inserten los resultados de búsqueda coincidentes.

 @Component({ selector: 'autocomplete', templateUrl: './autocomplete.component.html', providers: [AutocompleteService] }) export class AutocompleteComponent implements OnInit{ constructor(private autocompleteService: AutocompleteService){} value: string = ''; searchControl = new FormControl(); // fired when input happens getResults(event){ this.autocompleteService.searchTest(event.target.value); this.autocompleteService.getCurrentResults().subscribe( value => console.log(value) ); }

Configuré el patrón observable lo mejor que pude, pero no obtengo nada de .subscribe en getResults

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Además de lo que dijeron jonrsharpe y echonax :

puedes usar Asunto:

 @Injectable() export class AutocompleteService { searchTerm: string; results = []; subject = new Subject(); searchTest(term){ this.searchTerm = term.toLowerCase(); if(this.searchTerm.length > 2){ this.recruiters.forEach(el =>{ if(el.name.toLowerCase().indexOf(term) != -1) { this.subject.next(el); } }); } } getCurrentResults():Subject<Object> { return this.subject; }

}

y suscríbase a getCurrentResults() de la misma manera que lo hizo.

tu demostración: plunker

over 4 years ago · Santiago Trujillo Relatório

0

Hay muchos errores en tu código.

  1. No hay un campo this.recruiters en su servicio

  2. this.results.push(el); no empujará nada a los resultados porque está usando forEach(function(el){ debería haber sido forEach((el)=> para que this dentro del alcance se refiera a su servicio.

Plunker de ejemplo: http://plnkr.co/edit/5L0dE7ZNgpJSK4AbK0oM?p=preview

over 4 years ago · Santiago Trujillo 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