我是 Angular2 和 observables 的新手。我试图将一系列可观察的结果返回给我的解析器,但在 SO 上找不到答案。当我只返回一个可观察对象时一切正常,但当它们被链接时会失败。我已将代码简化为连续调用两次相同的测试函数:
@Injectable()
export class SwResolve implements Resolve<any> {
constructor(private swService: SwService) {}
resolve (route: ActivatedRouteSnapshot): Observable<MyObject> | Promise<any> | any {
this.swService.getTestData().subscribe(data => {
return this.swService.getTestData();
});
}
}
组件:
export class SwComponent implements OnInit {constructor(
private route: ActivatedRoute,
private router: Router
) { }
ngOnInit(): void {
this.route.data.forEach((data: any) => {
// Handle data received
});
}
};
软件服务:
getTestData() {
return Observable.create(observer => {
let testObject : SwDataObject = {
'labels':['value0','value1'],
'desktop':[123,456],
'mobile':[789,1011]
};
observer.next(testObject);
observer.complete();
});
}
我在这里做错了什么?
谢谢 !
编辑 6 月 17 日:添加更多信息,因为我花了一段时间来了解 RxJs 的方法(flatMap、mergeMap、...)。主要原因是因为我只是没有了解它们的功能方面。我鼓励同一条船上的人看看查尔斯·斯卡尔法尼(Charles Scalfani )关于函数式编程的这些优秀系列文章。