我正在尝试使用另一个服务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);
}
我在组件中获得的数据是不确定的。预先感谢。
答案 0 :(得分:2)
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;
}
}