Как перейти к дочернему маршруту по умолчанию - Angular 7 (Routes)

Я использую угловые маршруты, чтобы перемещаться по компонентам. Когда пользователь вошел в систему, они переходят к dashboard/:id а потом они видят dashboard/123/projects и т. д. Проблема в том, когда пользователь переходит на /dashboard только я хочу перенаправить их на /dashboard/:id по умолчанию. Но когда я делаю это так: { path:"dashboard", redirectTo:"dashboard/:id/projects", pathMatch:"full"} это из-за ошибки, говорящей :id не определено, и я не могу перейти к /dashboard текущему пользователю, вошедшему в систему /dashboard/123/projects,

Мой код Routes.modules.ts

const routes: Routes = [{
    path: "",
    redirectTo: "/login",
    pathMatch: "full"
  },
  {
    path: "login",
    component: LoginComponent
  },
  {
    path: "register",
    component: RegisterComponent
  },
  //the problem goes here
  {
    path: "dashboard",
    redirectTo: "", //How to redirect to dashboard/:id ?
    pathMatch: "full"
  },
  {
    path: "dashboard/:id",
    component: DashboardComponent,
    children: [{
        path: "",
        redirectTo: "projects",
        pathMatch: "full"
      },
      {
        path: "projects",
        component: ProjectsComponent
      },
      {
        path: "archived",
        component: ArchivedProjectsComponent
      },
      {
        path: "projects/:id",
        component: SingleProjectComponent,
        children: [{
            path: "",
            redirectTo: "plans",
            pathMatch: "full"
          },
          {
            path: "plans",
            component: PlansComponent
          },
          {
            path: "tasks",
            component: TasksComponent
          },
          {
            path: "photos",
            component: PhotosComponent
          },
          {
            path: "files",
            component: FilesComponent
          },
          {
            path: "people",
            component: PeopleComponent
          },
          {
            path: "settings",
            component: SettingsComponent
          },
          {
            path: "trash",
            component: TrashComponent
          },
          {
            path: "**",
            redirectTo: "plans",
            pathMatch: "full"
          }
        ]
      },
      {
        path: "**",
        redirectTo: "projects",
        pathMatch: "full"
      }
    ]
  },
  {
    path: "**",
    component: PageNotFoundComponent
  },
];

2 ответа

Решение

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

Получить идентификатор пользователя из полезной нагрузки или от вашего API-вызова зависит от вашей структуры и передать его по маршруту.

this.router.navigate(['/dashboard/' + id + '/projects']);

this.router является примером Router,

Я думаю, что вам нужно будет хранить значение ": ID" где-то, как в локальном хранилище между запросами, т.е. сохранить последний "идентификатор".

Укажите произвольное значение в вашем перенаправлении, а затем запишите это в свой DashboardComponent, Ищите 9999 (или что-то еще) и вместо этого замените значение из локального хранилища.

  ngOnInit() {
localStorage.getItem('id'))
  }
{
    path: "dashboard",
    redirectTo: "dashboard/99999", //How to redirect to dashboard/:id ?
    pathMatch: "full"
  }
Другие вопросы по тегам