在订阅方法功能之外获取变量数据

时间:2019-11-26 04:25:17

标签: angular

我想创建一个函数,该函数从使用外部API的服务返回一个对象。我无法使其工作。

GetMatchinfo (matchid : number  ) : Match {

    let aq :Match;

    this.matchService.GetMatch(matchid).subscribe(
        (Matchinfodata: Match)=>{     
            aq=Matchinfodata;
         }
    ); 

    return aq;

}

1 个答案:

答案 0 :(得分:1)

如果要从模板调用函数,则只需将返回调用的位置移到订阅块。或者,如果您在其他函数中使用GetMatchInfo(),则最好使用可观察和主题。

GetMatchInfo (matchid : number  ) : Observable<Match> {

    let aq = new Subject<Match>();

    this.matchService.GetMatch(matchid).subscribe(
        (Matchinfodata: Match)=>{     
            aq.next(Matchinfodata);
         }
    ); 

    return aq.asObservable();

}

并在您需要的地方订阅GetMatchInfo()函数。

this.GetMatchInfo(id).subscribe(
    (result) => {
        console.log(result)
    }
);