В Angular 8 Router родительский маршрут остается тем же самым при переходе к маршруту с другим родителем - PullRequest
0 голосов
/ 23 октября 2019

Я работаю над проектом, написанным на Angular (v8.2.8), и использую роутер с той же версией. Архитектура маршрутизации следующая:

У меня есть app-routing.module.ts, где у меня есть 3 записи для массива routes: Shell.childRoutes([...array of routes]), Case.childRoutes([...array of routes]), { path: '**', redirectTo: '/', pathMatch: 'full' }

Shell - это родительский компонентдля внутренних страниц приложения. Случай - это родительский компонент для общедоступных страниц приложения.

Дочерние маршруты метода выполняются практически одинаково для обоих компонентов:

export class Shell {
  static childRoutes(routes: Routes): Route {
    return {
      path: 'app',
      component: ShellComponent,
      children: routes,
      canActivate: [AuthenticationGuard],
      data: { reuse: true }
    };
  }
}

и

export class Case {
  static childRoutes(routes: Routes): Route {
    return {
      path: '',
      component: CaseComponent,
      children: routes,
      data: { reuse: true }
    };
  }
}

Приложение имеет dashboard компонент для Shell родителя и home компонент для Case родителя. Пользователь загружает страницу в home маршрут и разметка выглядит следующим образом:

<app-root>
  <app-case> 
    <router-outlet></router-outlet>
    <app-home></app-home>
  </app-case>
</app-root>

И после перенаправления на маршрут dashboard я ожидаю следующую разметку:

<app-root>
  <app-shell> 
    <router-outlet></router-outlet>
    <app-dashboard></app-dashboard>
  </app-shell>
</app-root>

Но я получаю

<app-root>
  <app-case> 
    <router-outlet></router-outlet>
    <app-dashboard></app-dashboard>
  </app-case>
</app-root>

Так что точная проблема в тестовом примере: пользователь находится на маршруте, который существует в Shell parent. Затем, если пользователь будет перенаправлен на любой маршрут в Case parent - родитель останется в Shell. И та же ситуация работает в другом направлении. Если маршрут Case был загружен первым, после перенаправления на Shell родительский маршрут останется без изменений.

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

...