Будут ли AngularDart 5 дочерних маршрутов обновлять родительский маршрут - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть приложение AngularDart 5 со следующей структурой вложенных компонентов:

  • mainComponent с розеткой основного маршрутизатора. Его путь /.

  • Компонент A как дочерний элемент mainComponent. У него также есть свой собственный выход маршрутизатора, и его путь /a.

  • Компонент 1 как дочерний элемент A. Его путь /a/1.

  • Компонент 2 как еще один потомок A. Его путь
    /a/2.

Будет ли переключение с 1 на 2 вызвать перезагрузку / визуализацию страницы a?

например. при воспроизведении видео в a произойдет ли перезагрузка видео с 1 на 2?

Если это так, можно ли это предотвратить?

Я на самом деле задаю этот вопрос, потому что для меня при переключении с 1 на 2 страница будет перезагружена / перерисована.

EDIT:

Вот мои конфигурации маршрутизации.

Маршруты основного компонента:

class AppRoutePaths {
  static final portal = RoutePath(path: 'portal');
  static final workspace = RoutePath(path: 'workspace');
}

class AppRoutes {
  static final _default = RouteDefinition.redirect(
      path: '', redirectTo: AppRoutePaths.portal.toUrl());

  static final _workspaceRoute = RouteDefinition(
      routePath: AppRoutePaths.workspace,
      component:
          workspace_component.WorkspaceComponentNgFactory as ComponentFactory);

  static final all = [_default, _workspaceRoute];
}

и соответствующая розетка маршрутизатора:

<router-outlet [routes]="AppRoutes.all"></router-outlet>

Это маршруты компонента A:

class WorkspaceRoutePaths {
  static final dashboard =
      RoutePath(path: 'dashboard', parent: AppRoutePaths.workspace);

  static final settings =
      RoutePath(path: 'settings', parent: AppRoutePaths.workspace);
}

class WorkspaceRoutes {
  static final dashboard = RouteDefinition(
      routePath: WorkspaceRoutePaths.dashboard,
      component: dashboard_component_template.DashboardComponentNgFactory as ComponentFactory);

  static final settings = RouteDefinition(
      routePath: WorkspaceRoutePaths.settings,
      component: settings_component_template.SettingsComponentNgFactory as ComponentFactory);

  static final _default = RouteDefinition.redirect(
      path: '', redirectTo: WorkspaceRoutePaths.dashboard.toUrl());

  static final all = [dashboard, settings, _default];
}

и соответствующая розетка маршрутизатора:

<router-outlet [routes]="WorkspaceRoutes.all"></router-outlet>

1 Ответ

0 голосов
/ 04 сентября 2018

Если вы хотите, чтобы компонент использовался повторно, вам нужно добавить CanReuse mixin к вашему компоненту.

В случае компонента A это будет выглядеть так:

@Component(
    selector: "component-a",
    templateUrl: "component-a.html",
    styleUrls: ["component-a.css"],
    directives: [routerDirectives])
class A with CanReuse {...}
...