Angular - два разных лениво загруженных модуля, связанных с подпутями одного и того же пути - PullRequest
0 голосов
/ 22 марта 2019

У меня есть эти маршруты

/items/:id
/items
/items/:id/edit
... etc

Я хочу поместить компонент, которому я сопоставляю / items /: id / edit, внутри отдельного лениво загруженного модуля, чем компоненты, которым сопоставлены другие маршруты.

Я хочу сделать это, потому что компонент, связанный с / items /: id / edit, очень тяжелый и вызывает много субмодулей, которые не нужны для других маршрутов.

В идеале я хотел бы сделать что-то вроде этой конфигурации (которая, к сожалению, не работает):

@NgModule({
  imports: [
    RouterModule.forRoot([
      { // If the route matches "items/:id/edit", then look inside this module
        path: 'items/:id/edit',
        loadChildren: './items_editor/items_editor.module#ItemsEditorModule',
      },
      { // Otherwise look inside this other one
        path: 'items',
        loadChildren: './items/items.module#ItemsModule',
      },
    ]);
  ],
});

В настоящий момент, поскольку я не нашел способа достичь своей цели, я обошел ее, переименовав путь в «items /: id / edit» в «items_editor /: id»:

@NgModule({
  imports: [
    RouterModule.forRoot([
      {
        path: 'items',
        loadChildren: './items/items.module#ItemsModule',
      },
      {
        path: 'items-editor',
        loadChildren: './items_editor/items_editor.module#ItemsEditorModule',
      },
    ]);
  ],
});

Однако мне не нравятся эти изменения, потому что они не являются именами REST.

1 Ответ

2 голосов
/ 22 марта 2019

единственный вариант для этого случая - использовать UrlMatcher в конфигурации маршрута, и с его помощью не делегировать элементы /: id / редактировать путь к ItemModule, см. https://angular.io/api/router/UrlMatcher подробности

...