服务呼叫另一服务

时间:2020-02-05 16:02:53

标签: angular

我正在尝试使用另一个服务B https://angular.io/tutorial/toh-pt4)来构建服务A ,如下所示:

export class ServiceA {       
   private testMap: Map<string, string> = new Map();

   constructor(private serviceB: ServiceB) {}

   getTestMap(): Observable<Map<string, string>> {
      this.serviceB.getSomething(new HttpParams()).(data => {
         this.testMap.set('A', data);
      }
   }
}

和一个组件将上面定义的地图称为:

ngOnInit(){
   this.getTestMap();
}

getTestMap(): void {
   this.serviceA.getTestMap().subscribe(data => this.componentMap = data);

}

我在组件中获得的数据是不确定的。预先感谢。

2 个答案:

答案 0 :(得分:2)

ServiceA的

getTestMap()应该返回Observable。在您的示例中,您什么也不返回。可能看起来像这样(提供的this.serviceB.getSomething()还返回了Observable):

export class ServiceA {       
   private testMap: Map<string, string> = new Map();

   constructor(private serviceB: ServiceB) {}

   getTestMap(): Observable<Map<string, string>> {
      return this.serviceB.getSomething(new HttpParams())
        .pipe(
          tap(data => this.testMap.set('A', data)),
          map(() => this.testMap)
        );
   }
}

在您的组件中:

ngOnInit(){
   this.getTestMap();
}

getTestMap(): void {
   this.serviceA.getTestMap().subscribe(data => this.componentMap = data);
}

一些有用的资源:

答案 1 :(得分:0)

我相信getTestMap方法应该像这样:

getTestMap(): Observable<Map<string, string>> {
      return this.serviceB.getSomething(new HttpParams()).(data => {
         this.testMap.set('A', data);
    return data;
      }
   }