Esta es mi solución al reto, en el componente products.component.ts he agregado una variable que me va a servir como Output con una función que será el que va a emitir el evento
@Output() onLoadMore: EventEmitter<string> = new EventEmitter<string>();
loadMore() {
this.onLoadMore.emit();
}
Ya desde products.component.html cuando se le de click al button vamos a llamar a la función loadMore()
<button (click)="loadMore()">Load more</button>
Para finalizar desde home.component.html solo tenemos que leer dicho evento y mandar a llamar la lógica para cargar más del home.component.ts
<app-products [products]="products" (onLoadMore)="loadMore()"></app-products>
loadMore(): void {
this.productsService.getAll(this.limit, this.offset)
.subscribe(data => {
this.products = this.products.concat(data.filter(product => product.images.length > 0));
this.offset += this.limit;
});
}
Para finalizar en el servicio de products, no se hace una correcta asignación de los params, entonces si quieren que les funcione correctamente solo deben de cambiar en la función getAll lo siguiente:
let params = new HttpParams();
if (limit != undefined && offset != undefined) {
params = params.set('limit', limit);
params = params.set('offset', offset);
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?