Angular 6无法两次调用HTTP服务?

时间:2019-08-21 23:55:39

标签: angular typescript http

我很茫然,我有一个使用http客户端来获取数据的服务:

export class CategoryService {
  ...
  public getCategories(include?: string): Observable<ICategory[]> {
    return this.http.get(`/categories?include=${include}`);
  }
  ...
}

最初是从另一个组件中的ngOnInit方法调用的,此方法工作正常,返回了数据并将其显示在视图中。

export class ListCategoriesComponent implements OnInit {
  ...
  public ngOnInit() {
    this._getCategories();
  }

  private _getCategories() {
    // Debug
    console.log('called getCategories');

    this.loading = true;
    this.categories = [];
    this.temp = [];
    this.catService.getCategories('products')
      .subscribe((response) => {
        this.categories = response;
        this.temp = [...this.categories];
        this.loading = false;
      }, (err) => {
        this.loading = false;
      });
  }
  ...
}

我遇到的问题是,当我尝试再次调用_getCategories刷新数据时,可以看到从console.log输出中调用了该方法。但是我认为数据没有刷新。 XHR请求不会重新发送到服务器。

我发誓我曾经能够在Angular 2和Angular 4中做到这一点。但是现在由于某种原因,它根本不起作用。我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

这是ngx-datatable的一个特定问题,也是我对库(可能是JS)的误解。

简单地设置this.categories = response;不允许用新数据更新表,我需要使用JS Spread运算符。

赞:

this.categories = [...response];

如果我不这样做,则不会更新数据。也许有人可以对此背后的原因发表评论。