как я могу перенаправить пользователя с angular маршрутизацией - PullRequest
0 голосов
/ 26 января 2020

Когда я пытаюсь go указать мой адрес / дом, я получаю сообщение об ошибке. Когда пользователь вводит в адресную строку myaddress / home, необходимо перенаправить его на myaddress / home / allQuestions. Другие маршруты работают. Я использую angular 8.


    const routes: Routes = [
      {
        path: '', component: MainLayoutComponent, children: [
          {path: '', redirectTo: '/login', pathMatch: 'full'},
          {path: 'login', component: LoginFormComponent},
          {path: 'registration', component: RegistrationFormComponent}
        ]
      },
      { path: 'home', component: HomeLayoutComponent, children: [
          {path: '', redirectTo: '/allQuestions', pathMatch: 'full'},
          {path: 'allQuestions', component: AllQuestionsComponent},
          {path: 'addQuestion', component: AddQuestionComponent},
        ], canActivate: [AuthenticationGuard] 
      }
    ];

Ошибка:

ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'allQuestions'
Error: Cannot match any routes. URL Segment: 'allQuestions'

1 Ответ

0 голосов
/ 26 января 2020

Прямо сейчас с вашим кодом, angular маршрутизатор, попытается заменить адрес дырочного маршрута (/ home) на /login.

Чтобы установить адрес для redirectTo, Вы не можете использовать /

измените вторую строку

...
{ path: 'home', component: HomeLayoutComponent, children: [
          {path: '', redirectTo: '/allQuestions', pathMatch: 'full'},
...

на эту

{path: '', redirectTo: 'allQuestions', pathMatch: 'full'},

Исправлен код ошибки

const routes: Routes = [
      {
        path: '', component: MainLayoutComponent, children: [
          {path: '', redirectTo: 'login', pathMatch: 'full'},
          {path: 'login', component: LoginFormComponent},
          {path: 'registration', component: RegistrationFormComponent}
        ]
      },
      { path: 'home', component: HomeLayoutComponent, children: [
          {path: '', redirectTo: 'allQuestions', pathMatch: 'full'},
          {path: 'allQuestions', component: AllQuestionsComponent},
          {path: 'addQuestion', component: AddQuestionComponent},
        ], canActivate: [AuthenticationGuard] 
      }
    ];

Следующий шаг

После того, как вы исправили этот код, убедитесь, что измените способ загрузки компонентов и подумайте об использовании отложенной загрузки.

Я имею в виду, например, что для целей авторизации у вас может быть AuthModule, этот модуль может иметь свой собственный auth-router. module.ts, который содержит информацию о маршруте для модуля auth (например, / signin и / signup). Таким образом, модули будут загружаться, только если маршрут, который идет туда, называется!

...