我在角度2组件中具有此功能。

 getSystem() {
 this.applicationService
 .getSystem(this.id)
 .subscribe(
   sysID => this.sysID = sysID,
   () => console.log("success"))
}


我成功返回了sysId,因为我随后将其传递给另一个函数,但从未成功打印出来。我需要能够调用另一个函数来代替打印成功,但是该代码从未执行过。这是我的服务:

  getSystem(appId: String):Observable<string>{
  return this.http.get('http://localhost:8090/app/cmticket/getsystem?app=' +appId)
  .map(this.extractData)
  .catch(this.handleError);


}

  private extractData(res: Response) {
console.log("extract data")
return  res.json().stringList;


}
我将相同的代码用于另一个函数,并且可以正常工作,因此即使无法返回数据,也无法理解为什么它没有执行。

最佳答案

您的subscribe()签名(docs)错误。像这样使用它:

.subscribe(
   sysID => this.sysID = sysID,
   null, // second positional argument is error
   () => console.log("success"))


要么

.subscribe({
   next: sysID => this.sysID = sysID,
   complete: () => console.log("success")
})

10-04 15:47