Как изменить идентификатор URL навигации в резольвере? - PullRequest
0 голосов
/ 28 января 2019

У меня проблема с распознавателем угловых маршрутов.Мой случай состоит из шагов:

  1. Перейдите по ссылке app / test / old_key.
  2. Средство распознавания получит новый ключ.
  3. Затем перейдите по ссылке app / test/ new_key / description

Итак, у меня проблема на шаге 3. Если я меняю ключ, я получаю сообщение об ошибке Error: Outlet is not activated.

Это мой код распознавателя.:

resolve (route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<StepInfo> {
   const key = route.paramMap.get('id');
   this.key = key;

   this.startSession().pipe(
    switchMap((data) => {
    return this.getCurrentStep(data);
   }))
   .subscribe(next => {
     this.router.navigate(['/test/' + this.key + '/' + 'description']);
   });

  return null;
}

private startSession (): Observable<SessionResponse> {
  const params = new HttpParams().set('key', this.key);
  return this.api.get(`session/start`, SessionResponse, params);
}

private getCurrentStep(data: SessionResponse): Observable<StepInfo> {
  this.key = data.newKey;
  const params = new HttpParams().set('key', this.key);
  return this.api.get(`workflow/getcurrentstep`, StepInfo, params);
}

Я включил в стек мое тестовое приложение.

https://stackblitz.com/edit/as7sdfsd

Например,

  1. Я перехожу на URL https://as7sdfsd.stackblitz.io/test/some_key,
  2. получить новый ключ (some_new_key)
  3. и затем я хочу, чтобы преобразователь перенаправил на новый URL: https://as7sdfsd.stackblitz.io/test/some_key_new/description

И я уже сделалрабочая версия с angular.guard и сохранение нового ключа в localStorage.Но я все еще хочу решить эту проблему с URL.

...