Angular 筛选订阅数据后,需要获取初始数据

Angular 筛选订阅数据后,需要获取初始数据,angular,typescript,Angular,Typescript,我已经过滤了可观察的,但当我用不同的方法再次尝试时,我得到的是空字段 filterprojlessthentree(){ this.projectService.getProjects().pipe(映射(projects=>this.projects.filter(project=>project.id>5)).subscribe(response=>this.projects=response);} 过滤一次后,我需要获得初始日期,以便通过不同的方法再次过滤。有没有办法重置到上一个 filt

我已经过滤了可观察的,但当我用不同的方法再次尝试时,我得到的是空字段

filterprojlessthentree(){

this.projectService.getProjects().pipe(映射(projects=>this.projects.filter(project=>project.id>5)).subscribe(response=>this.projects=response);}

过滤一次后,我需要获得初始日期,以便通过不同的方法再次过滤。有没有办法重置到上一个

filterProjBeetwenThreeAndFive(){

this.projectService.getProjects().pipe(映射(projects=>this.projects.filter(project=>project.id>=3&&project.id<5))).subscribe(response=>this.projects=response);}
创建一个可观察的项目。 使用共享操作符避免重复。 现在,创建2个订阅服务器:

 projects$=this.projectService.getProjects().pipe(share());

  filterProjLessThenThree(){
  this.projects$.pipe(
    map(projects => projects.filter(project => project.id > 5))
  ).subscribe(response => this.projects = response);
  }


  filterProjBeetwenThreeAndFive(){

  this.projects$.pipe(
    map(projects => projects.filter(project => project.id >= 3 && project.id < 5))
   ).subscribe(response => this.projects = response);
  }
projects$=this.projectService.getProjects().pipe(share());
FilterProjLessThenthenThree(){
此.projects$.pipe(
映射(projects=>projects.filter(project=>project.id>5))
).subscribe(response=>this.projects=response);
}
filterProjBeetwenThreeAndFive(){
此.projects$.pipe(
映射(projects=>projects.filter(project=>project.id>=3&&project.id<5))
).subscribe(response=>this.projects=response);
}
提示1: 而不是在贴图操作符中进行过滤 使用过滤器操作符:

  this.projects$.pipe(
    switchMap(list=>list),
    filter(item=> item.id>=3 &&item.id<5),
    toArray()
  ).subscribe(response => this.projects = response);
this.projects$.pipe(
开关映射(列表=>list),
过滤器(item=>item.id>=3&&item.id this.projects=response);
提示2:
不要忘记取消订阅!或者最好使用
async
pipe

有很多方法可以做到这一点。例如,你可以使用pairwise()来保留新旧值。谢谢。我得到了测试。效果很好!@AlexBeria如果这有帮助,如果你投票,我会很高兴的