Angular - Использование skipLocationChange внутри catchError () преобразователя - PullRequest
0 голосов
/ 14 марта 2019

Разыскиваемое поведение:

Перейдите к /article/123 и, если статья не существует, ArticleResolver обрабатывает ошибку и переходит к ErrorComponent this.router.navigate(['error'], { skipLocationChange: true }), сохраняя /article/123 url.

Что происходит:

/article/123 не сохраняется. Вместо этого я получаю предыдущий URL. Похоже, что URL /article/123 никогда не отправляется в историю маршрутизатора.

Мой код:

resolve(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): Observable<any> {

    return this.articleService.get(route.params['id'])
      .pipe(catchError((err) => {

        if (err.StatusCode === 500) {
          this.router.navigate(['error'], { skipLocationChange: true });
          return of(false);
        }

        return of(null);
      }
    ));
  }
...