首页 > 解决方案 > 如何使用 HttpClient angular 4 正确过滤 json

问题描述

我在从 Http 迁移到 HttpClient 时遇到问题,这是我使用的代码

constructor(public navCtrl: NavController, public http: HttpClient, private alertCtrl: AlertController) {

 this.http.get('http://example.com/date.php')
.subscribe(data => {
  this.posts = data;
  this.postsfilter = data.filter(item => item.date == todayDate);

 });

 }

我已经包含了 import 'rxjs/add/operator/filter'; 但仍然出现错误:“对象”类型上不存在属性“过滤器”。如何正确过滤返回的 json 文件?

标签: angulartypescriptionic-framework

解决方案


通过调用data.filter(),您将访问该Array.prototype.filter()方法,而不是 RxJS 的过滤器方法。在您的情况下,data包含一个没有方法的对象filter。这就是导致错误的原因。

Observable要使用 RxJS 的过滤器,您需要使用符号将其链接到您的过滤器.

这就是它的样子:

 this.http.get('http://example.com/date.php')
  .map(item => this.postsfilter = item)
  .filter(item => item.date === todayDate) // probably you would also want to go for strict equality
  .subscribe(data => {
    this.posts = data;
  });

注意:从 RxJS 5.5 开始,您可以使用该pipe方法。这基本上改变了链接 RxJS 操作符的方式。在此处了解更多信息:https ://blog.hackages.io/rxjs-5-5-piping-all-the-things-9d469d1b3f44


推荐阅读