angular - 如何使用 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 文件?
解决方案
通过调用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
推荐阅读
- java - 如何使用 @RequestParam 注解将表单输入输入到控制器
- c# - 将一对一转换为一对多关系问题
- java - 片段页面无效 findViewByID
- c++ - 有没有办法从 istringstream 中读取两个字符?
- wpf - 更新后缺少程序集引用
- c - MPI 将值传递给所有内核
- excel - 格式化数据透视表时出现运行时错误 1004
- php - 使用 laravel 构建一个电报机器人,将他们的聊天 ID 和他们的 ETH 地址保存到数据库
- javascript - 当键相同时,React 输入在值更改后无法正确呈现
- javascript - 除非我使用 Ctrl + Shift + R 再次加载页面,否则我的预加载器不会消失。可能是什么问题?