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

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

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

...