Перенаправление с резольвером Angular 6 - PullRequest
0 голосов
/ 14 ноября 2018

Я использую angular-cli для своего приложения, у меня есть страница входа, и вот обработчик, чтобы отправить его:

onSubmit() {
    this.authService.login(this.uname.value, this.pass.value)
      .subscribe(
        (user: User) => {
          this.username = user.username;
          localStorage.userExist = true;
          this.route.navigate(['/office/1']);
        },
        (err) => {
          this.errorFromServer = err.error;
        });
  }

После отправки я ожидаю, что меня перенаправят на localhost:3000/office/1, но вместо этого я получаю ошибку:

GET http://localhost:3000/api/plan net::ERR_CONNECTION_RESET.

http://localhost:3000/api/plan предоставляет информацию о плане офиса, и я получаю эти данные с помощью PlanResolver. На самом деле, я могу получить эти данные при переключении между офисами, но они не работают, когда я пытаюсь перенаправить со страницы входа. Так что, может быть, что-то не так с навигацией внутри подписки.

У меня есть два преобразователя, которые должны быть выполнены перед навигацией:

{path: 'office/:id', component: OfficesComponent,
  resolve: {cres: OfficeResolver, plan: PlanResolver},
  canActivate: [AuthGuardService]},

Когда у меня был один преобразователь, он работал нормально, поэтому я решил объединить два преобразователя в один с помощью forkJoin, но я получил ту же ошибку.

Единственное решение, которое у меня сейчас есть, - это навигация в SetTimeout:

setTimeout(() => {
   this.route.navigate(['/office/1']);
}, 500);

Если у вас есть идеи, что не так, пожалуйста, скажите мне.

Спасибо всем.

1 Ответ

0 голосов
/ 14 ноября 2018

.navigate метод принимает массив команд в качестве первого аргумента.Вы передаете составленный URL, как на .navigateByUrl.Таким образом, преобразователь не может иметь доступ к параметру id.

Попробуйте переопределить перенаправление следующим образом:

this.route.navigate(['office', 1']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...