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

268
Views
¿Cómo envío datos a un componente Angular solo una vez (ya que @Input escucha actualizaciones todo el tiempo)

Tengo un componente Angular Scroller

 <app-scroller></app-scroller>

que proporciona un esqueleto para mostrar una matriz de imágenes

Componente aleatorio

 <app-scroller [init]="getImages('cats')"></app-scroller> <app-scroller [init]="getImages('dogs')"></app-scroller>
 getImages(src: string) { //THIS FUNCTION GETS CALLED AGAIN AND AGAIN return { aspect: '16/9', res: 'min', sources: this.imageService.getImagesFromAPI(src) }; }

Componente de desplazamiento

 public movies: string[] = []; @Input() init: {aspect: string, res: string, sources: Promise<string[]>}; ngOnInit() { this.init.sources.then(images => this.movies = movies); }

pero esto da como resultado que getImages y, por lo tanto, las sources prometen ejecutarse una y otra vez

¿Hay alguna manera de que pueda enviar datos al componente Scroller solo una vez (por lo tanto, sin usar @Input() )

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

0

Use el enlace de propiedad solo para enviar el ID de categoría (perros/gatos) al componente y llame a getImages(cateogryID) solo una vez en el componente secundario.

Componente principal

 <app-scroller [categoryId]="catIdProperty"></app-scroller>

Componente hijo:

 @input() categoryId: string; images: [type here] = [initialization here]; ngOnInit(): void { this.images = this.getImages(categoryId); // Btw, could getImages() reside in the imageService? }
about 4 years ago · Juan Pablo Isaza Report

0

Creo que debe llamar a su servicio una vez para obtener la matriz de imágenes y guardarla dentro de su componente como una propiedad,

algo como esto

 myService.getData.subscribe(data=> this.catImages = data)
about 4 years ago · Juan Pablo Isaza Report

0

Si entiendo su pregunta y la configuro correctamente, está preguntando sobre cómo evitar que una @Input escuche, ¿qué sucede si, en cambio, evita que se emitan datos a esta entrada?

Podría entregar una secuencia observable que emita solo una vez, por ejemplo.

 catImages$ = this.catDataFromService$.pipe( take(1), ) <app-scroller [source]="catImages$ | async"></app-scroller>

Alternativamente, puede construir su propio Observable y completarlo cuando sea necesario.

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!