Angular 过滤器';rxjs';我的组件中的可观察和渲染过滤对象

Angular 过滤器';rxjs';我的组件中的可观察和渲染过滤对象,angular,typescript,rxjs,Angular,Typescript,Rxjs,我试图通过id过滤可观察的对象,但得到了错误。我已经从json文件中获得了一些虚拟数据,但不知道如何将该对象显示为实体形式。有什么帮助吗 服务。ts: 导出类项目服务{ 私有路径URL:string=“/assets/project data.json”; 构造函数(私有http:HttpClient){} getProjects():可观察的{返回this.http.get(this.pathurl)}; 组件.ts文件: filterProj(){ var filteredProj=thi

我试图通过id过滤可观察的对象,但得到了错误。我已经从json文件中获得了一些虚拟数据,但不知道如何将该对象显示为实体形式。有什么帮助吗

服务。ts

导出类项目服务{
私有路径URL:string=“/assets/project data.json”;
构造函数(私有http:HttpClient){}
getProjects():可观察的{返回this.http.get(this.pathurl)};
组件.ts文件:

filterProj(){
var filteredProj=this.projectService.getProjects()
管
(映射(projects=>this.projects.filter(project=>project.id<3))
);
返回filteredProj;
}
Components.html

设计

您需要从
map
操作符返回过滤列表

filterProj() {
  this.projectService.getProjects().pipe(
    map(projects => {
      const filteredList = projects.filter(project => project.id < 3);
      return filteredList;
    })
  );
}
filterProj() {
  this.projectService.getProjects().pipe(
    filter(project => project.id < 3)
  );
}
更新: 我错过了订阅部分。正如@Nicholas K在他的回答中所建议的那样,你需要订阅你的可观察对象来获得它的价值

一个建议是:
filter
运算符在需要筛选数据时比
map
运算符更具可读性。

两个问题:

  • 您需要订阅observable以实际从中获取数据 它:


  • json的结构是什么?谢谢伙计,我已经解决了这个问题,你给了我一个巨大的提示。所以,我有几个按id过滤的选项(比如id<3,id>3&&id<5等等)但是,当我尝试再次筛选时,subscribe方法会给我已经筛选过的数据。我如何在开始时指出以前的可观测数据具有初始数据集?我的意思是某种默认设置的重置。在这种情况下,我接受答案!我没有得到你的第二个问题,你能澄清一下吗?我想用不同的筛选方法筛选数据。我想重新设置初始集(不是筛选集)以使用不同的方法进行筛选。
    filterprojlessthentree(){this.projectService.getProjects().pipe(map(projects=>this.projects.filter(project=>project.id>5)).subscribe(response=>this.projects=response);}
    filterprojbeetwentreeandfive(){this.projectService.getProjects().pipe(映射(projects=>this.projects.filter(project=>project.id>=3&&project.id<5))).subscribe(response=>this.projects=response);}
    data;
    
    filterProj(){
      this.projectService.getProjects() 
         .pipe
           (map(projects => this.projects.filter(project => project.id < 3))
          )
         .subscribe(response => this.data = response);        
    }
    
    <div *ngIf="data">
       {{ data | json}}
    </div>