需要帮助重构到Angular中的异步管道吗

需要帮助重构到Angular中的异步管道吗,angular,typescript,asynchronous,observable,Angular,Typescript,Asynchronous,Observable,我需要一些帮助来重构异步管道的方法和服务调用 下面是我的组件和服务中的内容 ///component// 乐队:Iband[]; getbands(){ this.membersService.getBandsFormber(this.member.id).subscribe(响应=>{ 这意味着反应; },错误=>{ console.log(错误); }); } /////服务// getbandsForMember(id:编号){ 返回this.http.get(this.baseUrl+'

我需要一些帮助来重构异步管道的方法和服务调用

下面是我的组件和服务中的内容

///component//
乐队:Iband[];
getbands(){
this.membersService.getBandsFormber(this.member.id).subscribe(响应=>{
这意味着反应;
},错误=>{
console.log(错误);
});
}
/////服务//
getbandsForMember(id:编号){
返回this.http.get(this.baseUrl+'members/'+id+'/memberbands');
}
这就是我遇到的一点小麻烦。 我想我是对的,除了服务,不知道如何修改它

///component/////
波段$:可见;
getbands(){
this.membersService.getBandsFormber(this.member.id).subscribe(响应=>{
这个.bands$=响应;
},错误=>{
console.log(错误);
});
}
/////服务//
getbandsForMember(id:编号){
返回此.http.get(this.baseUrl+'members/'+id+'/memberbands').pipe(
地图((波段:Iband[])=>{
返回带;
})
);
}
  • RxJS
    map
    操作符用于转换可观察对象发出的值。如果不转换响应,则不需要

  • 角度
    async
    管道应与可观察管道一起使用。您将类型定义为
    bands$:Observable
    是正确的。但不需要订阅。
    async
    管道将订阅可观测数据

  • 服务

    getbandsForMember(id:number):可观察{
    返回this.http.get(this.baseUrl+'members/'+id+'/memberbands');
    }
    
    组成部分

    bands$:可观察到;
    getbands(){
    this.band$=this.membersService.getBandsFormber(this.member.id);
    }
    
    模板

    
    {{bands | json}}
    
    更新:在组件中设置成员变量 当在模板中触发
    异步
    管道时,您可以在组件中使用
    点击
    映射
    操作符来执行一些副作用。如果传入的数据不需要转换,请使用
    点击
    ,如果不需要转换,请使用
    映射

    控制器

    bands$:可观察到;
    getbands(){
    this.band$=this.membersService.GetBandsFormber(this.member.id).pipe(
    点击(响应=>{
    log('get bands in component:',response);
    this.skip=true;//
    {{bands | json}}
    
    map(bands=>bands)
    是不可操作的。您正在将解析的值分配给属性,而不是可观察的-可能您得到了一个类型错误(尽管a会澄清)。您是否只想
    this.bands$=this.membersService.getBandsFormber(this.member.id)
    ?因此删除map()?我将方法返回的值分配给了这个。bands$,我没有错误。我还需要删除map()吗?嗨,Michael。快速提问-如果我想在getbandsForMember()之后做一点逻辑(设置1或2个其他组件变量)返回数据,我会在调用服务方法后立即将其放入吗?我询问的原因是,此调用不是异步的。我想等待服务返回,那么在返回数据后如何执行?例如,在我的个人资料页面上,我获取评论,在评论进入后,通过用户单击,我想更新“跳过”值e、 这样下次我就不会收到同样的评论了。@user1186050:你可以在组件中使用
    点击
    操作符来做一些效果。我已经更新了答案。看看它是否适合你。嗨,我仍然有一些问题,并在这里发布了一个新的帖子:@user1186050:从现在删除的答案中,我假设你已经用
    解决了这个问题(审查$|异步)?。长度