Necesito cambiar el valor de los parámetros para el número de página y el título cuando llamo a una de las funciones a continuación... pero cuando llamo a las funciones, estos parámetros siguen siendo los mismos, ejemplo
http://miurl.com/jsonapi/views/busqueda_avanzada/informes?page=${this.pageNumber}&views-filter[titulo]=${this.titulo}
; //pageNumber devuelve 0, que es el valor inicial, pero cuando llamo a la función getPage() todavía devuelve 0 cuando debería devolver 1 y luego 2, para cada llamada. La idea es crear un filtro de búsqueda con Angular. ¡Espero que puedas darme alguna pista de lo que estoy haciendo mal! Gracias
import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; export interface InformesCounter { data: any; meta: any; count: any; attributes: any; links: any; next: any; href: any; titulo: any; } @Injectable({ providedIn: 'root' }) export class BuscadorService { pageNumber: any = 0; titulo: any = ''; informesNodes =`http://miurl.com/jsonapi/views/busqueda_avanzada/informes?page=${this.pageNumber}&views-filter[titulo]=${this.titulo}`; constructor(private http: HttpClient) { } getNodes(): Observable<InformesCounter> { this.pageNumber = 1; return this.http.get<InformesCounter>(`${this.informesNodes}`); } getFiltered(titulo: any): Observable<InformesCounter> { this.titulo = titulo; this.pageNumber = 1; return this.http.get<InformesCounter>(`${this.informesNodes}`); } getPage(): Observable<InformesCounter> { this.pageNumber = this.pageNumber + 1; return this.http.get<InformesCounter>(`${this.informesNodes}`); } ungetPage(): Observable<InformesCounter> { this.pageNumber = this.pageNumber - 1; return this.http.get<InformesCounter>(`${this.informesNodes}`); } }
Su cadena de plantilla de informesNodes
solo se evalúa una vez, cuando se crea la instancia de clase. No se actualiza automáticamente con nueva información.
Una solución fácil sería reemplazarlo con un captador y el resto de su código puede permanecer como está:
get informesNodes() { return `http://miurl.com/jsonapi/views/busqueda_avanzada/informes?page=${this.pageNumber}&views-filter[titulo]=${this.titulo}`; }