Передайте аргумент для распознавателя, чтобы получить отфильтрованные значения из API - angular

Я хочу использовать 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 (Internal Server Error)", и я перенаправлен (намеренно) на главную страницу, но затем, когда я перехожу к компоненту во второй раз, я получаю то, что хочу.

Я предполагаю, что это имеет что-то общее с первым распознавателем, похоже, что в первый раз я не могу получить дату и время неопределенного, потому что оба распознавателя выполняются одновременно, есть ли способ "задержать" второго распознавателя? Или, может быть, есть другая умная идея для достижения моей цели?

0 ответов

Другие вопросы по тегам