Обязательно ли связывать маршрут с компонентом в Angular? - PullRequest
0 голосов
/ 08 мая 2019

Я новичок в Angular.У меня есть следующее дерево папок / файлов:

-- app folder
  -- root (
     -- pages (pages-routing, pages-module, pages-component)
        -- page1 (page1-routing, page1-component)
           -- subcomponent (subcomponent-component)

Моя маршрутизация страниц определяется следующим образом

const routes: Routes = [{
path: '',
component: PagesComponent,
   children: [{
     path: 'page1',
     component: Page1Component,
   }, {
     path: 'subcomponent',
     component: SubComponent,
   }],
 }];

 @NgModule({
    imports: [RouterModule.forChild(routes)],
    exports: [RouterModule],
 })
 export class PagesRoutingModule { }

 export const routedComponents = [
     Page1Component,
     SubComponent,
 ];

Модуль страниц NgModule

@NgModule({
  imports: [
    ThemeModule,
    PagesRoutingModule,
  ],
  declarations: [
     ...routedComponents,
  ],
  providers: [
    SmartTableService,
  ],
})

Страница1NgModule выглядит примерно так:

@NgModule({
   imports: [
      ThemeModule,
      PagesRoutingModule,
      Ng2SmartTableModule,
   ],
   declarations: [
      ...routedComponents,
   ],
   providers: [
      SmartTableService,
   ],
})

Это работает, но у меня такой вопрос .. Мне интересно, возможно ли удалить маршрут для подкомпонента .., так как подкомпоненту не нужен маршрут для реального?До сих пор я пытался удалить из страниц-маршрутизации эти

{
 path: 'subcomponent',
 component: SubComponent,
}

и

{ 
 SubComponent,
}

, и я добавил ссылку на SubComponent в разделах Pages NgModule и Page1 NgModule декларации, ноЯ получаю: Не найдена фабрика компонентов для SubComponent

Так что реальный вопрос.Обязательно ли иметь маршрут для компонента?Может ли компонент жить без маршрута?

1 Ответ

1 голос
/ 08 мая 2019

Это не обязательно для компонента, связанного с маршрутом.

Обязательно использовать маршрут с компонентом - согласно документации Angular Route. Если он не установлен в Маршруте напрямую, то, по крайней мере, дочерний Маршрут должен иметь компонент.

https://angular.io/api/router/Route

component?: Type<any>   
The component to instantiate when the path matches. Can be empty if child routes specify components.

Компоненты могут служить чем-то вроде Страниц, куда вы обычно хотите направлять. В этих случаях вы будете связывать их с маршрутом для перехода на эту страницу. Компоненты также могут быть небольшими пакетами контента, которые вы хотите поместить в другие компоненты, например, компонент страницы. Вы попытаетесь инкапсулировать конкретную область видимости в конкретный компонент, который служит именно этой цели.

...