Я хочу использовать 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 (Внутренняя ошибка сервера)» и я перенаправлен (преднамеренно) на главную страницу, но затем, когда я перехожу к компоненту во второй раз, я получаю то, что хочу.
Я предполагаю, что это имеет что-то общее с первым распознавателем, похоже, что в первый раз я не могу получить дату и время неопределенного, потому что оба распознавателя выполняются одновременно, есть ли способ «задержать» второе распознаватель? Или, может быть, есть другая умная идея для достижения моей цели?