调用函数时更改参数值 angular

change value of params when calling function angular

当我调用下面的函数之一时,我需要更改 pageNumber 和 titulo 的参数值...但是当我调用这些函数时,这些参数保持不变,示例

http://miurl.com/jsonapi/views/busqueda_avanzada/informes?page=${this.pageNumber}&views-filter[titulo]=${this.titulo}; //pageNumber returns 0 这是初始值,但是当我调用 getPage() 函数时仍然是 returns 0,每次调用它应该 return 1 然后 2。 这个想法是用 Angular 创建一个搜索过滤器。希望你能给我一些线索,让我知道我做错了什么!谢谢

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}`);
  }

}

您的 informesNodes 模板字符串仅在创建 class 实例时评估一次。它不会自动更新新信息。

一个简单的解决方案是用 getter 替换它,其余代码可以保留 as-is:

get informesNodes() {
    return `http://miurl.com/jsonapi/views/busqueda_avanzada/informes?page=${this.pageNumber}&views-filter[titulo]=${this.titulo}`;
}