我想在一个组件中使用2个解析器。 第一个“结果”-从数据库中获取单个结果。工作正常,解析器从路由获取参数。 第二个'resultsByDate'-从数据库中获取所有其他结果,其中添加的日期等于第一个解析器中收到的结果(第一个针对特定用户,第二个-来自其他用户的一批结果)。
我试图弄清楚如何获得这些价值,但我的想法耗尽了。我不太好的解决方案如下所示:
time: string;
resolve(route: ActivatedRouteSnapshot): Observable<Result[]>{
this.resultService.getResult(route.params['id']).subscribe((item:Result) => {
this.time = item.dateAdded.toString().slice(0,10);
console.log(this.time)
});
return this.resultService.getResultsBydate(this.time).pipe(
catchError(error => {
this.alertify.error('problem retrieving data');
this.router.navigate(['/results']);
return of(null);
}),
);
}
如您所见,我使用服务以####-##-##格式获取正确的日期时间,并将其传递给API(ASP.NET Core)。不幸的是,第二次加载组件时,一切运行正常-首先,我得到了 “ GET http://localhost:5000/api/results/range/undefined 500(内部服务器错误)”,我被(有意地)重定向到主页,但是,当我第二次访问该组件时,我得到了想要的东西。
我认为这与第一个解析器有一些共同点,看起来第一次我无法获得undefined的日期时间,因为两个解析器都在同一时间执行,有什么办法可以“延迟”第二个解析器解析器?也许还有其他聪明的想法可以实现我的目标?